ทำไมควรโค้ดมากกว่า MVC

Founder, MyCoding.Academy
วิศวกรไฟฟ้าและโทรคมนาที่หลงไหลการเขียนโปรแกรม เลยได้ทำงานประจำช่วงหนึ่งทางด้านการพัฒนาซอฟต์แวร์ ปัจจุบันก็ยังทำงานเป็นฟรีแลนซ์ทางด้านการเขียนโปรแกรมอยู่นะครับ

การเขียน web application คงไม่มีใครไม่รู้จัก Design Pattern ที่ชื่อว่า MVC (Model-View-Controller) ซึ่งเป็นการจัดแบ่งหน้าที่โดย Model ทำหน้าที่ในการอ่านและเขียนข้อมูล อาจจะเป็นฐานข้อมูล ใน Laravel Framework ก็จะมี Eloquent ทำหน้าที่ตรงนี้ สำหรับ View จะทำหน้าที่ในการแสดงผลโดยจะรับข้อมูลมาจาก Controller ดังนั้นในโครงการขนาดใหญ่ตัว Controller ก็จะมีขนาดใหญ่เนื่องจากเราต้องใส่ Business Model ไว้ที่นี้

ถ้าอยากจะปรับปรุงตรงนี้จะทำอย่างไร นั่นคือหัวข้อที่เราจะมาคุยกันในวันนี้ครับ

 

Service Layer หรือชั้นบริการ

ใน Laravel นั้น Service Layer หรือ เลเยอร์บริการ เป็นรูปแบบสถาปัตยกรรมที่ใช้ในการห่อหุ้มตรรกะทางธุรกิจ ทำให้คอนโทรลเลอร์ "บาง หรือมีขนาดเล็ก" และมุ่งเน้นเฉพาะการจัดการคำขอและการตอบสนอง HTTP เท่านั้น เลเยอร์บริการทำหน้าที่เป็นตัวกลางระหว่างคอนโทรลเลอร์และเลเยอร์การเข้าถึงข้อมูล (ผ่าน Model หรือ Repository) ส่งเสริมการแยกส่วนการทำงานอย่างชัดเจน ปรับปรุงความสามารถในการทดสอบ และการนำโค้ดกลับมาใช้ใหม่ โดยในการใช้งานตัวคอนโทรลเลอร์ก็จะเรียกคำสั่งของ Service โดยการตรวจสอบต่างๆ จะอยู่ที่ Service ทั้งนีอาจจะยกเว้นส่วนของ Request Validation ชั้นแรกก่อน ตัวอย่างเช่น การสร้าง user เมือมีการลงทะเบียนที่อาจจะมีความซับซ้อน เช่นกรณีของ Multi-tenant application ก็อาจจะต้องทำหลายอย่างเช่น กำหนด Role, Subscription และสร้างฐานข้อมูล การทำงานพวกนี้จะอยู่ที่ service โดยคอนโทรลเลอร์จะเรียกแค่ registerUser(...) เท่านั้น