ข้าม​ไป​ยัง​เนื้อหา

DevIQ — อ้างอิง​การ​ออกแบบ​ซอฟต์แวร์ (ฉบับ​ภาษา​ไทย)

คลัง​อ้างอิง​การ​ออกแบบ​ซอฟต์แวร์​จาก DevIQ แปล​เป็น​ภาษา​ไทย​ครบ​ทั้ง 208 หัวข้อ ใน 7 หมวด — แต่ละ​หน้า​เรียบเรียง​ใหม่​เชิง​ลึก พร้อม ไดอะแกรม Mermaid ตัวอย่าง code C# จุด​ควร​ใช้/ไม่​ควร​ใช้ และ​แหล่ง​อ้างอิง​ที่​ค้นคว้า​เพิ่ม ทุก​หัวข้อ​โยง​ถึงกัน​ด้วย link ภายใน

  • เปิด​หมวด​จาก​เมนู​ซ้าย — ทั้ง 7 หมวด​ยุบ​ไว้​ให้​เลื่อน​ง่าย กด​เปิด​เฉพาะ​หมวด​ที่​สนใจ
  • ทุก​หน้า​มี​โครง​เดียวกัน — เจตนา → โครงสร้าง (ไดอะแกรม) → ตัวอย่าง code → เมื่อไหร่​ควร/ไม่​ควร​ใช้ → ข้อดี​ข้อ​เสีย → ที่​เกี่ยวข้อง → แหล่ง​อ้างอิง
  • ค้นหา​ได้ — กด Ctrl/⌘ K แล้ว​พิมพ์​ภาษา​ไทย​หรือ​อังกฤษ (รองรับ​การ​ตัด​คำ​ไทย)
  • ไดอะแกรม​ซูม​ได้ — คลิก​ที่​ไดอะแกรม​เพื่อ​ขยาย​และ​เลื่อน​ดู
flowchart TD
  L["Laws · กฎ"] --> P["Principles · หลักการ"]
  P --> PR["Practices · แนวปฏิบัติ"]
  P --> DP["Design Patterns · design pattern"]
  PR --> DP
  DDD["Domain-Driven Design"] --> DP
  DP -.->|"ใช้ผิดที่กลายเป็น"| AP["Antipatterns · แอนติ pattern"]
  P -.->|"ละเลยจนเกิด"| CS["Code Smells · code กลิ่นแรง"]
  AP --> CS

หลักการ (Principles) คือ​ฐาน​ความคิด — นำ​ไป​ปฏิบัติ​เป็น Practices และ​ตกผลึก​เป็น Design Patterns; เมื่อ​ฝืน​หลักการ​หรือ​ใช้​ผิด​บริบท​ก็​กลาย​เป็น Antipatterns และ Code Smells; Laws เป็น​ข้อ​จำกัด​เชิง​สังเกต ส่วน DDD คือ​แนวทาง​เฉพาะ​สำหรับ domain ที่​ซับซ้อน

หลัก​คิด​ตั้งต้น​ของ​การ​ออกแบบ​ที่​ดี รวม SOLID, DRY, KISS, YAGNI และ​การ​จัดการ dependency

เริ่ม​ที่ Single Responsibility →

นิสัย​และ​วิธี​ทำงาน​ที่​นำ​หลักการ​ไป​ใช้​จริง เช่น TDD, Dependency Injection, Continuous Integration

เริ่ม​ที่ Test-Driven Development →

แม่​แบบ​แก้​ปัญหา​การ​ออกแบบ​ที่​พบ​ซ้ำ ๆ รวม GoF ครบ (Creational / Structural / Behavioral) และ pattern ระดับ​สถาปัตยกรรม

เริ่ม​ที่ Strategy →

รูปแบบ​ที่​ดูเหมือน​ช่วย แต่​สร้าง​ปัญหา​ระยะ​ยาว แยก​เป็น​ระดับ code สถาปัตยกรรม และ​กระบวนการ

เริ่ม​ที่ Waterfall →

สัญญาณ​ใน code ที่​บอกว่า​ถึง​เวลา​ควร refactor พร้อม​วิธี​แก้​แบบ before/after

เริ่ม​ที่ Poor Names →

กฎ​และ​หลัก​สังเกต​ที่​ส่ง​ผล​ต่อ​การ​ออกแบบ​และ​ทีม เช่น Conway’s Law, Gall’s Law

เริ่ม​ที่ Conway’s Law →

แนวคิด​หลัก​ของ​การ​ออกแบบ​ที่​ยึด domain เป็น​ศูนย์กลาง เช่น Aggregate, Bounded Context, Ubiquitous Language

เริ่ม​ที่ Aggregate →