Monthly Archives: May 2013

ผมเป็นเกษตรกร

วันนี้ได้มีโอกาสดูการพรีเซนต์ที่ดีมากอันหนึี่ง ผู้พูดเป็นคนที่มีอาการทางสมอง 2 ชนิด คือ Type II BiPolar และ ADHD (ส่วนตัวเพิ่งเคยได้ยินวันนี้) ซึ่งทำให้เค้าเป็นคนหัวไวมาก แต่ไม่สามารถคุมสมาธิตัวเองได้ นอนยาก ตื่นยาก ทำให้ชีวิตเค้าล้มเหลวเรียนตรีไม่จบ ทำงานเบื่อง่าย ไม่กล้าพบหมอ ไม่กล้ารักษา เก็บตัว ไม่กล้าเจอผู้คน แต่ปัจจุบันเค้าก็เข้ารับการรักษา สามารถแก้ไข และกลับมามีชีวิตที่ดีได้
ก่อนที่ผมจะสปอยด์เนื้อหาไปมากกว่านี้ อยากให้ฟังกันเองครับ

Continue reading

Advertisements

Delegation ง่ายๆ บน Ruby

แนวคิดเรื่อง การเลือกใช้composition ก่อน inheritance เป็นที่พูดถึงกันมานานพอสมควรแล้ว ผมได้ยินแนวคิดนี้เป็นครั้งแรกจากบทหนึ่งในหนังสือ Effective Java และก็ยังคงได้ยินผลของแนวคิดนี้มาจนถึงปัจจุบันตัวอย่าง เช่น ภาษาที่เกิดในยุคหลังนี้อย่าง Go ที่จะไม่มี inheritanceให้ใช้เลย

โดยปกติแล้วเราจะชอบใช้ inheritance กันมากกว่าเพราะมันเขียนสั้นกว่า แค่เพียง extend คลาสแม่ ก็พร้อมใช้งานแล้ว ต่างจาก composition ที่ต้องมีการเขียนเพิ่มเติมอย่างชัดเจนว่าเราจะเรียกใช้อะไรจากคลาสต้นทาง ถ้าคลาสต้นทางมี method เยอะก็ต้องเขียนกันยาวเลยทีเดียว ใน blog นี้เรามาดูกันว่า Ruby มีตัวช่วยอะไรที่ทำให้การเขียน composition สั้นลงมากๆ

ก่อนอื่นผมขออธิบายคำศัพท์เล็กน้อย

  • composition คือ object หนึ่งมีการเรียกใช้ object อื่นๆ ภายใน
  • decorator เป็นหนึ่งใน Design Patterns ของ GOF ที่พูดถึง การที่ object หนึ่งเพิ่มความสามารถให้กับอีก object หนึ่ง โดยการห่อ object ต้นทางไว้ และยังคงความสามารถของต้นทางไว้ทั้งหมด
  • delegation คือ การที่ object หนึ่งส่งต่องานของตัวเองไปสู่อีก object หนึ่ง ซึ่งมักจะใช้เป็นคำพูดแบบรวมๆ ของทั้ง composition และ decorator

Continue reading