เมื่อไรที่เราจะตัดสินใจกำหนดว่าอันไหนควรจะเป็น Model ?


เมื่อไรที่เราจะตัดสินใจกำหนดว่าอันไหนควรจะเป็น Model ?


สวัสดีครับ

ผมใช้ CI มาช่วงระยะหนึ่งแล้วเกิดคำถามว่า เมื่อไหร่เราจะตัดสินใจว่า อันนี้ควรจะเป็น Model อันนี้ควรจะเป็น Libraries รบกวนถามหน่อยครับ เช่นโดยทั่วไปนั้นก็เป็นอันรู้กันพอสมควรว่า function ที่เกี่ยวข้องกับ Database น่าจะอยู่ใน Model

แต่ถ้าสมมติว่าผมมี funciton เช็คบางอย่างเช่น User นี้ตอบคำถามล่าสุดมานานกี่นานที กี่วินาทีแล้ว ผมก็ต้องไปติดต่อ DB และเอาค่าเวลาล่าสุดที่ User ตอบมาคำนวนเปรียบเทียบกับเวลา ณ ปัจจุบัน โอเคผมอาจจะมีฟังก์ชั่นสำหรับดึงค่ามาจาก DB และ function ที่คำนวนเวลาล่ะ ? ควรจะเก็บไว้ที่ไหน Model หรือว่า Controller ? หรือว่า Libraries ?

สอบถามต่อว่าถ้า ต้องการออกแบบไม่ว่าจะ C,M นั้นจะออกแบบอย่างไรให้เหมาะกับงาน อาจจะงงกับคำถามนะครับ หมายถึงว่า จะออกแบบอย่างไรให้รองรับในอนาคตได้ดี แก้ไขน้อย

โพสเมื่อ : 2012-07-05 19:32:01 | 6 ปี , 4 เดือน , 3 สัปดาห์ , 1 วัน, 5 ชั่วโมง ผ่านมา
Model กับ Libraries ???
คิดง่ายๆนะครับ ถ้าต้องค้นฐานข้อมูลให้ทำเป็น Model ถ้าไม่ให้ทำเป็น Libraries ไม่ก็ Helper ครับ
ส่วนบางกรณีที่มาแปลกๆ ก็ต้องตัดสินใจเองครับ ว่าคุณทำแบบใหนแล้วใช้ง่าย ถนัด หรือสะดวกที่สุด

ลำดับ : 1 | ตอบเมื่อ : 2012-07-09 01:09:03 | 6 ปี , 4 เดือน , 2 สัปดาห์ , 5 วัน ผ่านมา

function ที่คำนวนเวลา ปัจจุบันเค้าจะใช้ js คำนวนเอานะครับ ส่วนตัวquery ให้ดึงแค่เวลาที่ตำคำถามมาเท่านั้นครับ ตัวอย่างเช่น facebook

ลำดับ : 2 | ตอบเมื่อ : 2012-08-24 13:29:45 | 6 ปี , 3 เดือน , 11 ชั่วโมง ผ่านมา

เวลาผมออกแบบระบบ ผมทำใช้วิธีอย่างนี้ครับ
- Controller แน่นอน เอาไว้ validate และตอบสนองกับ user เป็นด่านแรก
- View สำหรับแสดงผล html
- Helper สำหรับเรียกใช้ function อะไรที่ง่ายๆ แต่เรียกซ้ำๆบ่อยๆ เป็นเหมือน utility เช่น วันที่ปัจจุบัน, การแปลง array เป็น object และอื่นๆ ที่ง่ายๆ
- Library ผมจะเอาไว้สำหรับทำอะไรที่เฉพาะทาง เช่น ระบบ Authentication, Session, Social Login, และ Class อื่นๆที่มีการสร้างที่เหมาะสำหรับงานต่างๆ

ถามว่า แล้วทำไม ไม่สร้างใน Model
ผมจะเอา model สร้างเป็น Object ครับ แล้วให้ Library เรียกใช้งานอีกที

ยกตัวอย่างเช่น สร้าง User Object เราก็สร้าง User_model ไว้ แล้วก็ใส่ property เข้าไป
ส่วน method ก็มีเฉพาะที่จำเป็น เช่น store(), load(), bind(), getInstance(), contructure() อะไรพวกนี้

ส่วน method อื่นๆ ที่เกี่ยวกับจัดการ User ก็สร้าง Library แล้วใส่ไว้ในนั้นเหล่ะครับ เช่น is_loginned(), delete(), is_user_available() เพราะพวกนี้เป็นส่วนของ Authentication ไม่ใช่จำเป็นต้องมี property ในคลาสนั้นๆ

ถ้าจะมองให้เห็นภาพชัด ลองศึกษาเรื่อง Design Pattern ดูครับ
จะทำให้เราออกแบบระบบ ได้อย่างดีเลย :)

ลำดับ : 3 | ตอบเมื่อ : 2012-10-07 20:42:02 | 6 ปี , 1 เดือน, 1 สัปดาห์, 5 วัน , 4 ชั่วโมง ผ่านมา

ต้องออกแบบระบบก่อนครับ เขียน class diagram ออกมาได้ แล้ว นั้นล่ะคือ model ที่ควรทำ

ลำดับ : 4 | ตอบเมื่อ : 2013-07-26 16:43:49 | 5 ปี , 3 เดือน , 8 ชั่วโมง ผ่านมา
เข้าสู่ระบบ
คงสถานะการเข้าระบบ