design-an-interface
Installation
SKILL.md
Design an Interface
อิงจากแนวคิด "Design It Twice" ในหนังสือ "A Philosophy of Software Design": ไอเดียแรกของคุณแทบไม่เคยเป็นไอเดียที่ดีที่สุด สร้าง design หลายแบบที่ต่างกันสุดขั้ว แล้วค่อยเปรียบเทียบ
Workflow
1. เก็บ Requirements
ก่อนออกแบบ ต้องเข้าใจก่อนว่า:
- module นี้แก้ปัญหาอะไร?
- ใครคือ caller? (module อื่น, ผู้ใช้ภายนอก, test)
- operation หลักคืออะไรบ้าง?
- มี constraint อะไรไหม? (performance, compatibility, pattern ที่มีอยู่แล้ว)
- อะไรควรซ่อนไว้ข้างใน อะไรควร expose ออกมา?
ถามว่า: "module นี้ต้องทำอะไรได้บ้าง? ใครจะเป็นคนใช้?"