SOLID หลักการพัฒนาซอฟท์แวร์สำหรับ Agile

การพัฒนาซอฟท์แวร์

STUPID และ SOLID ทั้งสองคือหลักการที่นักพัฒนาควรจดจำ มันคือหลักการพัฒนาซอฟท์แวร์ และยังสามารถใช้ในการพัฒนาตนเองได้

 

STUPID code..?

ความหมายก็คือ นักพัฒนามักจะมองข้ามความสำคัญของสิ่งเหล่านี้ ซึ่งหลายๆ คน ก็มักจะเป็นกัน ทำให้นักพัฒนาต้องลำบากเมื่อซอฟแวร์ที่พัฒนามีความซับซ้อนขึ้น และปรับปรุงได้ยากขึ้น

  • Singleton
  • Tight Coupling
  • Untestaility
  • Indescriptive Naming
  • Duplication

ตามที่ได้กล่าวไป จะอธิบายรายละเอียด ดังนี้

STUPID and SOLID

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 แทน

 


 

เนื้อหาที่น่าสนใจ

7 เคล็ดลับการเรียน Programmer

เส้นทางสู่ Web Programmer

0 Comments

Leave a reply

Your email address will not be published. Required fields are marked *

*

CONTACT US

We're not around right now. But you can send us an email and we'll get back to you, asap.

Sending

Buffo Hero แหล่งรวมความรู้ด้านดิจิทัล เพื่อพัฒนาสายงาน Digital Marketing, Creative and Design, Programmer

Copyright © 2016. Created by Buffohero

Log in with your credentials

or    

Forgot your details?

Create Account