STUPID และ SOLID ทั้งสองคือหลักการที่นักพัฒนาควรจดจำ มันคือหลักการพัฒนาซอฟท์แวร์ และยังสามารถใช้ในการพัฒนาตนเองได้
STUPID code..?
ความหมายก็คือ นักพัฒนามักจะมองข้ามความสำคัญของสิ่งเหล่านี้ ซึ่งหลายๆ คน ก็มักจะเป็นกัน ทำให้นักพัฒนาต้องลำบากเมื่อซอฟแวร์ที่พัฒนามีความซับซ้อนขึ้น และปรับปรุงได้ยากขึ้น
- Singleton
- Tight Coupling
- Untestaility
- Indescriptive Naming
- Duplication
ตามที่ได้กล่าวไป จะอธิบายรายละเอียด ดังนี้
Singleton
คือ Pattern ในการ Design ที่อยู่รวมกันไว้ทุกอย่าง ยกตัวอย่างเช่น หนึ่ง Class หรือ Function ทำงานที่เกินหน้าที่ของตนเอง ฟังชั่นเดียว ทำได้ทุกอย่าง ซึ่งเป็นสิ่งที่ไม่เหมาะสม คุณเป็นโรค Singleton หรือเปล่า? หากคุณใช้มันทุกที่ มันเป็นสิ่งที่ไม่ควร
- โปรแกรมใช้ global state เป็นการยากที่จะตรวจสอบ
- โปรแกรมที่พึ่งพาแต่ global state และซ่อน dependency ของตน
Tight Coupling
Tight coupling เป็นที่รู้จักดีในชื่อของ String coupling คือปัญหาทั่วไปของ Singleton ควรจะลดสิ่งที่เป็นคู่ ระหว่าง module Coupling คือ โปรแกรมใน module ที่ต้องพึ่งพาสิ่งที่อยู่ในใน module อื่น
ถ้าทำการเปลี่ยน module ใน application คุณจะต้องเปลี่ยน module อื่นด้วย นั่นคือการเกิดของ coupling ยกตัวอย่างเช่น คุณเรียก object ใน constructor class แทนที่จะเรียกมันผ่าน argument สิ่งนี้แย่ เช่นทับ instance ด้วย instance จาก class ย่อย
Tightly coupled module เป็นสิ่งที่ยากในการนำกลับมาใช้ใหม่ และยากที่จะทำการทดสอบด้วย
Untestability
การทดสอบ software ไม่ควรยุ่งยาก ส่วนใหญ่แล้วเกิดจาก tight coupling ทำให้การ track โค้ดทำได้ยาก เพราะ class ที่เขียนเชื่อมกันหลาย class
Premature Optimization
โดนัล นัท กล่าวว่า “premature optimization(การเพิ่มความสามรถก่อนจะถึงเวลาอันควร) เป็นรากฐานของปีศาจร้าย มีแต่เสีย ไม่มีได้” ที่จริงแล้ว ระบบที่เพิ่มความสามารถจะซับซ้อนมากกว่าการแค่มา rewrite a loop หรือ ใช้ pre-increament แทน post-increment แล้วทุกอย่างจะมาจบสิ้นลงที่โค้ดที่ไม่สามารถอ่านได้… นี่คือว่าทำไม Premature Opimiztion จึงถูกเรียกบ่อยครั้งเป็น anti-pattern
ดังนั้นจึงแนะนำว่า
- อย่าทำมัน
- (สำหรับปรามาจารย์เท่านั้น) ก็อย่าพึ่งทำมัน
Indescriptive Naming
คือการตั้งชื่อที่ไม่สื่อความหมาย properties ของ class, method, attribute และ variable คุณเขียนโค้ดให้คนอ่าน ไม่ใช่คอมพิวเตอร์ มันไม่เข้าใจสิ่งที่คุณเขียนหรอก คอมแค่เข้าใจ 0 กับ 1 เท่านั้น ภาษา Programing คือภาษาสำหรับมนุษย์
Duplication
โค้ดที่ซ้ำ หรือใช้ซ้ำ นั้นแย่ และควรหลีกเลี่ยง ดังนั้นอย่า (DRY:Don’t Repeat Yourself) และทำให้มัน simple จงขี้เกียจให้ถูกทาง – เขียนโค้ดเพียงครั้งเดียว
หลังจากที่ได้อธิบายว่า STUPID code คืออะไร และต้องปรับปรุงอะไร ดังนั้นจึงต้องเขียนด้วย SOLID code แทน