𝗟𝗟𝗗 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗿𝗼𝗰𝗲𝘀𝘀 (𝗙𝗿𝗼𝗺 𝗥𝗲𝗾𝘂𝗶𝗿𝗲𝗺𝗲𝗻𝘁𝘀 𝘁𝗼 𝗖𝗼𝗱𝗲)

Low Level Design ไม่ใช่เรื่องของการเขียนโค้ดในทันที แต่เป็นเรื่องของการปฏิบัติตามกระบวนการที่มีโครงสร้างชัดเจน

ทำตามขั้นตอนเหล่านี้เพื่อเปลี่ยนจากโจทย์ปัญหาไปสู่โค้ดที่ใช้งานได้จริง

  1. ทำความเข้าใจความต้องการ (Requirements) อย่าเพิ่งรีบกระโดดไปที่การสร้างคลาส (Classes) ก่อนอื่นต้องหาให้ได้ว่าระบบต้องทำอะไรได้บ้าง
  • ต้องการฟีเจอร์อะไรบ้าง?
  • ต้องรองรับการทำงาน (Actions) อะไรบ้าง?
  • อาจมีการเปลี่ยนแปลงอะไรเกิดขึ้นในภายหลังบ้าง?
  1. ระบุคำนามเพื่อหาคลาส (Classes) มองหาคำนามในความต้องการของคุณ คำนามเหล่านั้นจะกลายเป็นคลาสของคุณ ตัวอย่าง: โปรแกรมแก้ไขเอกสาร (Document Editor)
  • คำนาม: Document, Text, Image, Storage, Editor
  • คลาส: Document, TextElement, ImageElement, Storage, DocumentEditor

ตัวอย่าง: ลานจอดรถ (Parking Lot)

  • คำนาม: ParkingLot, Floor, Slot, Vehicle, Ticket
  • คลาส: ParkingLot, Floor, Slot, Vehicle, Ticket
  1. ใช้ IS-A สำหรับการสืบทอด (Inheritance) ถามตัวเองว่า: "ลูกเป็นประเภทหนึ่งของพ่อแม่หรือไม่?"
  • TextElement IS-A DocumentElement
  • Car IS-A Vehicle
  • Dog IS-A Animal ถ้าคำตอบคือใช่ ให้ใช้การสืบทอด (Inheritance)
  1. ใช้ HAS-A สำหรับการประกอบกัน (Composition) ถามตัวเองว่า: "วัตถุหนึ่งประกอบด้วยอีกวัตถุหนึ่งหรือไม่?"
  • Document HAS-A ชุดขององค์ประกอบ (elements)
  • ParkingLot HAS-A ชุดของชั้น (floors)
  • Car HAS-A เครื่องยนต์ (engine) ใช้ Composition เพื่อเชื่อมโยงวัตถุเหล่านี้เข้าด้วยกัน
  1. ระบุคำกริยาเพื่อหาเมธอด (Methods) มองหาการกระทำในความต้องการ คำกริยาเหล่านั้นจะกลายเป็นเมธอดของคุณ
  • Add text กลายเป็น addText()
  • Save document กลายเป็น save()
  • Park vehicle กลายเป็น parkVehicle()
  1. วางแผนเพื่อรองรับการเปลี่ยนแปลงด้วยอินเทอร์เฟซ (Interfaces) คิดถึงการอัปเดตในอนาคต หากคุณบันทึกเอกสาร คุณอาจใช้ไฟล์ (File), ฐานข้อมูล (Database) หรือคลาวด์ (Cloud)
  • สร้างอินเทอร์เฟซที่ชื่อว่า Persistence
  • สร้างการนำไปใช้งาน (implementations) เช่น FileStorage หรือ DBStorage วิธีนี้จะช่วยให้คุณสามารถเพิ่ม CloudStorage ได้ในภายหลังโดยไม่ต้องแก้ไขโค้ดเดิมที่มีอยู่
  1. วาด UML และเขียนโค้ด เมื่อคุณมีคลาส, การสืบทอด, การประกอบกัน และเมธอดแล้ว ให้วาดแผนภาพ UML ซึ่งจะทำหน้าที่เป็นพิมพ์เขียว (blueprint) ของคุณ สุดท้ายจึงเปลี่ยนพิมพ์เขียวนั้นให้เป็นโค้ดที่สะอาด (clean code)

สรุปขั้นตอน:

  • ความต้องการ (Requirements)
  • คำนามสู่คลาส (Nouns to Classes)
  • IS-A สู่การสืบทอด (Inheritance)
  • HAS-A สู่การประกอบกัน (Composition)
  • คำกริยาสู่เมธอด (Methods)
  • ความหลากหลายสู่อินเทอร์เฟซ (Interfaces)
  • แผนภาพ UML (UML Diagram)
  • โค้ดสุดท้าย (Final Code)

ที่มา: https://dev.to/roshan_singh_dd54d52bbaa7/lld-design-process-from-requirements-to-code-594m