Ebook Studio

Topic 8

Topic 8

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

ภาพรวม

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

Ruby เปิดทางให้เกิดพฤติกรรมตอน runtime ได้อย่างทรงพลัง แต่ในเชิงการสอน เป้าหมายของ หัวข้อนี้ไม่ได้มีแค่ความสามารถ มันรวมถึงความยับยั้งชั่งใจด้วย ผู้เรียนควรเห็นว่าทั้ง dynamic dispatch และการสร้าง method อัตโนมัติดูงามได้ และก็ควรเห็นด้วยว่าใช้เกินไปเมื่อไร โค้ดจะกลายเป็นปริศนา

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

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

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

ผมอยากให้คุณอธิบายได้ว่าพฤติกรรมแบบ dynamic นี้ตอบโจทย์จริง ไม่ใช่ถูกใช้เพียงเพื่อ โชว์สไตล์

โน้ตสั้น

หัวข้อนี้คือจุดที่หลายคนเริ่มรู้สึกถึง "มนตร์" ของ Ruby แต่บทเรียนสำคัญไม่ใช่แค่ว่า Ruby ทำท่า dynamic ได้ บทเรียนสำคัญคือฟีเจอร์เหล่านี้มีค่าที่สุดเมื่อมันช่วยตัดโค้ดซ้ำ หรือช่วย ทำให้ DSL เล็ก ๆ อ่านออกชัด

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

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

เป็นการแลกที่ไม่คุ้ม

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

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

Example 1: Metrics APIs

ระบบ metrics มักเปิดชุด method ที่มีทรงเหมือนกันเป็นครอบครัว เช่น:

แบบนี้ทำให้ define_method เป็นตัวอย่างสอนที่สมเหตุสมผล เพราะความซ้ำซ้อนนั้นมีอยู่ จริง ไม่ได้ถูกสร้างขึ้นมาเพื่อโชว์เทคนิค

Example 2: DSL สำหรับสร้าง query

โค้ดสร้าง query เป็นตัวอย่างที่ดีของการใช้ Ruby แบบ dynamic เพื่อความอ่านง่าย ไม่ใช่ เพื่อความแปลกใหม่

QueryBuilder . new . where (: status , "active" ). where (: role , "admin" ) worked_examples.md ruby เหตุผลที่ตัวอย่างนี้มีประโยชน์:

โพยสั้น