MVC มุมมองใหม่ 3F to 3S
หลังจากนั่งทำ Refactoring code ของตัวเอง ทำให้ได้มุมมองใหม่ๆ จากที่เคยจิตนาการว่า [MVC](http://en.wikipedia.org/wiki/Model-view-controller) คือ 3F
- Fat Model: พยายามยัดทุกอย่างลง model เพื่อให้มันอ้วนๆ
- Fast Controller: เมื่อทุกอย่างไปอยู่ใน model ทำให้ view เปลี่ยนได้ง่าย
- Flexible View: ต้องทำให้ View ปรับแต่งได้เร็วที่สุด
Fat model ไปเป็น Smart Model
เวลาพิจารณาว่าอะไรควรอยู่ใน model ก็ให้จับหลักว่าลูกน้องควรรู้อะไร เพื่อให้หัวหน้าสบายที่สุด
สำหรับ Fast Controller นั้นไม่ค่อยตรงเท่าไหร เพราะ controller ไม่ค่อยเปลี่ยนบ่อยขนาดนั้น สิ่งที่ต้องการคือ ความเข้าใจง่ายและ การทำงานความถูกต้องซะมากกว่า ยิ่งสั้นยิ่งผิดยาก ไม่ควรยาวเกิน action ละ 15 บรรทัด การเป็นหัวหน้าต้องสั่งน้อยๆ ถ้าเมื่อใดสั่งมากแสดงว่าลูกน้องเราไม่ฉลาด ต้องไปเพิ่มความฉลาดให้ลูกน้อง (model) ดังนั้นต่อไปผมจะเปลี่ยนจาก
Fast Controller มาเป็น Short controller
ข้อที่ผมพลาดมากที่สุดคือ Flexible view เมื่อพิจารณาจากจุดเริ่มต้น ผมเริ่มใช้ MVC เพราะผมต้องการแยกงานเขียน code ออกจากงานด้านออกแบบ ถ้าผมพยายามทำให้ View มัน Flexible ผลที่ได้คือ มี Business logic บางส่วนมาอยู่บน view ด้วย เพื่อแก้ปัญหานี้ ต่อไปผมจะพยายามจะนิยาม view ใหม่จาก
Flexible View ไปเป็น Stupid View
ให้ความฉลาดของ view มันอยู่ที่การออกแบบไม่ได้อยู่ที่ code ของโปรแกรม ผมไม่ได้หมายความว่าให้ใช้แต่ HTML/CSS นะครับการใช้ Helper ก็เป็นตัวช่วยให้ view มันโง่ๆ ด้วย สิ่งที่ไม่ควรมีบน view คือพวกการคำนวนหรือ Businees logic เราควรเตรียมให้เรียบร้อยมาตั้งแต่ model
เมื่อคิดได้ดังนั้นจึงเปลี่ยนนิยามของ MVC จาก 3F ไปเป็น 3S แทนครับ
- Smart Model: เป็นลูกน้องที่ทำงานอย่างฉลาด ไม่ใช่ทำทุกอย่าง
- Short Controller: ไม่ควรเกิน 15 บรรทัด ถ้าเกินแสดงว่าลูกน้องเราโง่อยู่
- Stupid View: ให้ความฉลาดอยู่ที่การออกแบบ ไม่ได้อยู่ที่ code
ถ้าทำ Refectoring ต่อไปน่าจะได้มุมมองใหม่ๆ เพิ่มเติมอีก ถึงตอนนั้นนิยามอาจจะเปลี่ยนไปจากนี้ก็ได้ ตื่นเต้นจริงๆ
ความคิดเห็น
โพสต์ความคิดเห็น