Ebook Studio

Topic 2

Topic 2

โค้ด Ruby ใช้ร่วมจากโฟลเดอร์ en/ ของต้นฉบับ เพื่อให้สองภาษาผูกกับชุดทดสอบเดียวกัน

ภาพรวม

ทำไมหัวข้อนี้จึงสำคัญ

method ของ Ruby จะสั้นก็ได้ แต่ยังรองรับรูปแบบการเรียกที่ยืดหยุ่นได้ด้วย Keyword arguments ช่วยให้จุดเรียก method สื่อความหมาย ส่วน blocks ช่วยให้คนเรียกส่ง พฤติกรรมเล็ก ๆ เข้ามาได้โดยไม่ต้องสร้าง callback interface ที่เต็มไปด้วยพิธีรีตอง

สิ่งที่ผมอยากให้คุณทำได้เมื่อจบหัวข้อนี้

เมื่อจบหัวข้อนี้ คุณควรจะ:

จุดที่ผมใช้ดูความเข้าใจ

ผมอยากให้คุณสร้าง API เล็ก ๆ ที่ยังอ่านง่ายทั้งสำหรับคนเขียนและคนเรียกใช้ ไม่ใช่แค่ ทำให้ชุดทดสอบผ่านเท่านั้น

โน้ตสั้น

API ที่ดีใน Ruby มักอ่านแล้วเกือบจะเหมือนประโยคหนึ่งประโยค Keyword arguments ช่วย ให้คนเรียกเข้าใจความหมายได้โดยไม่ต้องเปิดเข้าไปดูใน method body ส่วน blocks ช่วยให้ คนเรียกส่งพฤติกรรมเล็ก ๆ เข้ามาได้ โดยไม่ต้องสร้างโครงหนัก ๆ มารองรับ

สำหรับคนที่มาจาก Java นี่เป็นความต่างที่สำคัญ ใน Java ความยืดหยุ่นมักพาไปสู่ type ที่มากขึ้น overload ที่มากขึ้น หรือโครงประกอบที่มากขึ้น แต่ใน Ruby ภาษาจะชวนให้เรา ทำจุดเรียก method ให้เล็ก กระชับ และสื่อความหมาย

จุดที่ Ruby ทำได้ดีในหัวข้อนี้:

จุดที่ต้องระวังในหัวข้อนี้:

คำถามชวนคิด:

ตัวอย่างแบบลงมือดู

Example 1: API สำหรับจัดรูปแบบที่อ่านจุดเรียกได้ทันที

formatter เป็นตัวอย่าง API เล็ก ๆ ที่ดี เพราะคนเรียกมักสนใจความอ่านง่ายมากกว่าราย ละเอียดข้างใน

formatter . wrap ( "warning" , left : "(" , right : ")" ) worked_examples.md ruby แบบนี้ดีกว่าการส่งเครื่องหมายวรรคตอนแบบ positional arguments เพราะแค่มองที่จุด เรียกก็เข้าใจได้เลยว่าค่าไหนทำหน้าที่อะไร

Example 2: notification hook ที่ใช้ block

blocks เหมาะมากเมื่อ framework เป็นคนควบคุมการวนซ้ำ แต่คนเรียกเป็นคนกำหนดผล ข้างเคียงที่อยากให้เกิดขึ้น

notifier . notify_all ( users ) do |message| audit_log << message end worked_examples.md ruby เหตุผลที่ตัวอย่างนี้มีประโยชน์:

โพยสั้น