Ebook Studio

Topic 6

Topic 6

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

ภาพรวม

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

นี่คือจุดที่ผู้เรียนเริ่มออกแบบ object เล็ก ๆ ที่ทำงานร่วมกัน แทนที่จะเขียน functions แยก กันแบบโดด ๆ หัวข้อนี้จึงแนะนำทั้ง state ภายใน, validation, พฤติกรรมที่แชร์ผ่าน modules และการส่ง dependency เข้ามาผ่าน composition

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

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

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

ผมอยากให้คุณอธิบายได้ว่าทำไม object จึงเป็นเจ้าของ state ของมันเอง และทำไม dependency อย่าง calculator จึงถูกรับเข้ามาจากภายนอก แทนที่จะสร้างไว้ข้างใน

โน้ตสั้น

ระบบ object ของ Ruby รองรับ class ขนาดเล็กมากที่ยังทำงานจริงจังได้ ผมอยากให้ผู้เรียน เห็นว่า class ไม่ได้มีเหตุผลเพียงเพราะมันสั้นหรือเล็ก แต่มีเหตุผลเพราะมันมีหน้าที่ มี state ของตัวเอง และมีขอบเขตการร่วมงานที่ชัด

หัวข้อนี้สำคัญเพราะมันเริ่มฝึกนิสัยใหญ่ 2 อย่าง:

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

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

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

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

Example 1: Wallet หรือยอดเงินในบัญชี

object ที่ถือยอดเงินเป็นตัวอย่างสอนที่ดี เพราะมันมี state จริง และมี invariants ที่ชัด

คำถามที่ผู้เรียนควรถาม:

Example 2: Checkout ที่รับ calculator เข้ามา

logic ของ checkout มักประกอบจาก pricing rules, discount engines, tax services หรือ promotional logic อยู่แล้ว จึงเป็นตัวอย่าง composition ที่เป็นธรรมชาติ

checkout = Checkout . new ( calculator : calculator ) checkout . final_total ( cart ) worked_examples.md ruby เหตุผลที่ตัวอย่างนี้มีประโยชน์:

โพยสั้น