Archive for the 'Ruby และ Rails' Category

Ruby Best Practice Patterns ฉบับสรุป

หลังจากที่ผมเคยคิดจะจด Domain เกี่ยวกับ Ruby หรือ Rails มาเฉพาะของตัวเอง สรุปว่ายังไม่พร้อมสักเท่าไรเลยมาทำใน Blog ก่อนละกันครับ แล้วเดียวค่อย Dump บทความไปยังบ้านใหม่ก็ยังไม่สาย เอาละครับมาฟังผมสรุปวีดีโออันนี้กันครับ  Ruby Hoedown 2008 : Ruby Best Practice Patterns โดยนาย Rein Henrichs คนนี้เขาพูดดีมากครับ แต่กว่าผมจะจับใจความได้เล่นเอาเหนื่อยเหมือนกัน โดยผมจะสรุปเฉพาะ 40 นาทีแรกนะครับ ซึ่งเป็นเนื้อหาของเขาโดยตรง แล้วส่วน 30 นาทีหลังมันเป็นคนถามคำถาม แล้วเขาตอบ ซึ่งผมจะไม่นำมารวมในนี้ละกันครับ มาเริ่มกันเลยครับ

  • Best Practice คือเทคนิคสุดยอดที่ยังถูกยอมรับและใช้
  • Pattern คือทางเลือกที่ดีที่สุดที่ถูกใช้แล้วใช้อีก ซึ่งช่วยในการสื่อสารระหว่างกันดีขึ้น
  • Pattern ช่วยให้คุณเขียนโค๊ดที่คนอื่นเข้าใจได้

โดยเริ่มแรกเข้าจะพูด Unfactoring from Pattern (ซึ่งเป็นสิ่งที่ไม่ควรกระทำแต่ในวีดีโอพูดว่าควรทำเพราะมัน Save Your Job) อันนี้ผมสรุปอันหลังที่เขาพูดเลยละกันครับ โดยเขาพูดถึง Best Practice ของ Ruby ดังนี้ครับ

  • DRY – Don’t Repeat Yourself (อย่าทำงานซ้ำ)
  • Local Consequences (จำกัดผลลัพธ์ ซึ่งจะช่วยให้คุณคุมงานง่ายขึ้น)
  • Optimize for Understanding (ทำให้เหมาะสมกับความเข้าใจ)
  • Accurate Domain Model (ทำต้นแบบความคิดอย่างระมัดระวัง)
  • Intention Reveling Name (เปิดเผยชื่อแบบตรงๆ)
  • Composed Method (การประพันธ์ Method)

โดยเจ้า Rein Henrichs นั้นพูดมาว่า “การทำให้งาน ตามเวลา,ต่ำกว่าทุน,ไม่มี bug เราเลือกได้แค่ 2 อย่างโดยต้องคำนึงถึงความเสี่ยง , ความสามารถในการผลิต , ความสามารถในการดูแลรักษา และการเขียน Code คือความเสี่ยง และความเสี่ยงไม่เป็นมิตรกับความสามารถในการผลิต และระบบจากรุ่นก่อนต้องการ การดูแลรักษา โค๊ดของคุณจะกลายเป็นโค๊ดรุ่นก่อนทันทีที่ถูกเขียน” ดังนั้นจุดแข็งที่ Ruby ต้องการคือ

  1. Ruby ต้องการทำให้ Code ดูแลได้ง่ายขึ้น แต่ไม่ได้เขียนเพื่อให้ระบบเร็วขึ้น
  2. Ruby ต้องการให้เขียน Code สำหรับมนุษย์อ่าน
  3. Ruby Code จะต้องบอกผู้อ่านถึงจุดประสงค์ของมัน

โดยเจ้า Best Practice Pattern ที่พูดมานั้นช่วยให้้เราเขียน code ที่คนอื่นเข้าใจได้ เพราะคุณต้องคิดมากขึ้นในการสร้างมัน จากบรรทัดไปอีกบรรทัด จาก method ไป method โดยสรุปมันทำให้โค๊ดคุณเร็วขึ้น ความเสี่ยงน้อยลง และดูแลง่ายขึ้น

Composed Method

การประพันธ์ Method ชื่อมันตามนี้จริงๆผมชอบ Concept มากโดยเขาถือว่า แต่ละ Method จะมี 2 แบบคือ Simple Method กับ Complex Method โดยแต่ละ Method จะต้องทำงาน Task ง่ายๆ 1 Task และชื่อของ Method จะต้องมีชื่อที่เข้าใจง่าย แล้ว Complex Method จะประกอบด้วย Simple Method หลายๆอันมารวมกัน โดยเจ้า Rein Henrichs เนี้ยเขาชอบเขียน 1 Method เพียง 4-5 บรรทัดเท่านั้น แล้วค่อยนำ Method มาต่อกันเป็นชั้นๆขึ้นไป

แนวทางการศึกาษาการใช้ Pattern ในการแก้ปัญหาต้องทำดังนี้

  1. Context เป็นสิ่งสำคัญมาก แต่ละ Pattern แก้ส่วนเล็กๆของปัญหา โดยการเขียน code ที่ดี โดยถ้าเราสามารถจำแนกได้ว่า pattern ไหนเหมาะกับอะไร จะแก้ปัญหาได้อย่างถูกต้อง
  2. เราต้องรู้ความต้องการของเราก่อน เพื่อที่จะเลือก Paradigm และ Pattern เพื่อทำสิ่งนั้น เช่น ทำเพื่อ Perfomance หรือ Maintainability พยายามรู้ให้ได้ว่าเราต้องการเน้นในเรื่องอะไรมีเรื่องอะไร
  3. ดู Examples ต่างๆที่อยู่ใน Ruby Libraries ที่คุณใช้ เพราะเขาเขียนไว้ดีอยู่แล้ว ต้องถามว่าทำไมเขาทำแบบนี้ ทำไมตรงนี้เขาทำด้วยวิธีอื่น แล้วเราก็หัดใช้และ apply
  4. Try Them ลองทำ แล้วเขียนด้วย Pattern ที่คุณรู้ ลองทำแล้วคิดดูกลับไปว่า ต้องทำยังไงมีวิธีอื่นที่ดีกว่านี้ไหม

นี้คือสิ่งที่ผมสรุปย่อๆมาให้ครับจริงๆแล้วคนนี้ยังพูดถึง คำถามและคำตอบที่เ้จ้า Ruby สามารถแก้ปัญหาได้ โดยวิธีง่ายแสนง่าย ตัวอย่างคำถามคือ How do i ensure that two actions happen together ? , How can I send Multiple Messages to the same object? วันนี้ผมลาไปก่อนแล้วครับ สวัสดีครับ

« Previous Page