Agent Dev Thai Academyprinciples · patterns · architecture
SOLID ในโค้ดจริง · แบบทดสอบ
0/6
ก่อนปิดบท

ทายตัวเลขก่อนรันโค้ด

แปดข้อ ทุกข้อคือคำสั่งที่กำลังจะส่งให้ agent คุณต้องบอกว่าเป็นหลักการไหน หรือฝั่งไหนจะเจ็บ ตอบผิดได้ แต่อ่านคำอธิบายให้ครบ

คะแนน 0 / 8
ข้อ 1 / 8

“ทีมการตลาดอยากเปลี่ยนข้อความอีเมลต้อนรับ” แต่โค้ดส่งอีเมลอยู่ในคลาสเดียวกับการ hash รหัสผ่าน หลักการไหนถูกละเมิด?

S ไฟล์เดียวมีสองเจ้าของ (marketing กับทีม auth) ถามว่า “ใครจะขอแก้ไฟล์นี้ครั้งต่อไป” ถ้ามีสองชื่อ มันคือสองไฟล์ ดูบนกระดาน S · Single Responsibility →
ข้อ 2 / 8

“เพิ่มช่องทางแจ้งเตือนผ่าน Discord” ในโค้ดที่ดี คุณคาดว่า diff จะเป็นแบบไหน?

O ของใหม่คือไฟล์ใหม่ที่ implement interface เดิม ถ้าต้องแก้ไฟล์ที่มีอยู่แล้ว แปลว่ายังไม่มีจุดต่อ (interface + registry) ดูบนกระดาน O · Open-Closed →
ข้อ 3 / 8

“เพิ่มส่งใบเสร็จทาง LINE” agent เขียนตัวส่งทาง LINE ที่มี send() ชื่อเดียวกับตัวส่งอีเมลเดิม คอมไพล์ผ่าน แต่พอ token หมดอายุ ตัว LINE throw ทันที ส่วนตัวเดิมคืน { ok:false } อะไรจะเกิดขึ้น?

L ชื่อ method ตรงกันไม่ได้แปลว่าใช้แทนกันได้ รูปทรงผ่าน แต่สัญญาเรื่อง “ล้มยังไง” ไม่ผ่าน ต้องมี contract test ชุดเดียวกันที่ตัวส่งทุกตัวผ่านก่อนขึ้นระบบ ดูบนกระดาน L · Liskov Substitution →
ข้อ 4 / 8

“เปลี่ยนวิธีรวมยอดในรายงานยอดขาย” รายงานใช้ข้อมูลออเดอร์แค่ 2 method แต่ import OrdersRepo มาทั้งก้อน 30 method ปัญหาจริง ๆ คืออะไร?

I interface 30 methods สำหรับคนใช้ 2 methods method อื่นเปลี่ยน คนใช้ก็ต้อง retest นิยาม port จากฝั่งคนใช้: ReadTotals มีสอง methods จบ ดูบนกระดาน I · Interface Segregation →
ข้อ 5 / 8

“ย้ายระบบตัดเงินจาก Stripe ไป Omise” ใน charge.ts กฎ retry 3 ครั้งอยู่ในฟังก์ชันเดียวกับบรรทัดที่เรียก Stripe วันที่ย้าย จะเสี่ยงอะไรที่สุด?

D กฎธุรกิจควรกำหนด PaymentGateway ด้วยคำของตัวเอง แล้วให้ Stripe/Omise ปรับตัวเข้าหา ลูกศรชี้เข้าหากฎธุรกิจ ไม่ใช่ออกไปหา vendor ดูบนกระดาน D · Dependency Inversion →
ข้อ 6 / 8

“เปลี่ยนรูปแบบข้อความแจ้งเตือน” agent แก้ `interface Channel` หนึ่งบรรทัด แล้วช่องทางทั้ง 6 ไฟล์คอมไพล์ไม่ผ่านพร้อมกัน บทเรียนคืออะไร?

O ปิดไม่ได้แปลว่าแช่แข็ง แต่แปลว่ามีคนพึ่งพา การแก้ interface ที่ 7 ไฟล์ implement คือการแก้ที่แพงที่สุดในระบบ ดูบนกระดาน O · Open-Closed →
ข้อ 7 / 8

คำสั่ง: “เปลี่ยนรูปแบบรายงานจาก CSV เป็น Excel” ในฝั่งที่ทำถูก agent ต้องเปิดกี่ไฟล์ และมีกี่ไฟล์ที่อาจพังเงียบ ๆ?

S ถ้ารายงานอยู่ในไฟล์ของตัวเอง agent เปิดไฟล์เดียวที่ไม่มีโค้ดตัดเงินอยู่ข้างใน blast radius = จำนวนไฟล์ที่ต้องเปิด + ไฟล์ที่อาจพังโดยไม่มีใครเห็น ดูบนกระดาน S · Single Responsibility →
ข้อ 8 / 8

กฎ SOLID ควรไปอยู่ตรงไหน ตอนที่ agent เป็นคนเขียนโค้ดส่วนใหญ่?

กฎที่เคยอยู่ในหัวคน ต้องกลายเป็น check ที่รันได้ นี่คือสิ่งที่เปลี่ยนไปในยุค AI ไม่ใช่หลักการ แต่คือที่อยู่ของมัน
คะแนนเก็บในเบราว์เซอร์ของคุณเท่านั้น