See the original English version of this article here
การจัดโครงสร้าง Code ถือเป็นส่วนที่ยาก แต่มันเป็นสิ่งที่สำคัญมากซึ่งส่งผลต่อ Readability และ Maintainability การจะเขียน Code ให้มีโครงสร้างที่ดีนั้นต้องใช้ทั้งการคิด ความเข้าใจในเรื่อง Design Patterns และประสบการณ์ ซึ่งสิ่งเหล่านี้ไม่ใช่สิ่งที่เรียนรู้กันได้ง่าย ๆ ในบทความนี้จะมาบอกถึง 5 บทเรียน ที่ได้จากการจัดโครงสร้าง Code
Lesson 1: การ Design
ก่อนที่คุณจะเข้าสู่การเขียน Code มันน่าจะเป็นความคิดที่ดีที่จะให้แนวคิดเกี่ยวกับวิธีการออกแบบ Application ที่คุณกำลังจะสร้าง วิธีที่คุณสามารถทำได้ ก็คือ ใช้ UML Diagrams
การวางแผนก่อนเริ่มเขียน Code จะช่วยให้คุณ Focus ได้ถูกจุด การคิดเกี่ยวกับโครงสร้างของ Code และการสร้าง UML Diagrams ที่คุณเห็นว่ามีประโยชน์ จะช่วยขจัดข้อบกพร่องได้อย่างชัดเจน ยิ่งไปกว่านั้นจะช่วยให้คุณได้ตระหนักถึงความจริงที่ว่า มีหลายอย่างที่ต้องคิดให้ดี ก่อนที่จะเขียน Code
UML Diagrams ที่คุณสร้างขึ้น จะช่วยให้ความคิดของคุณไม่หลุดออกนอกกรอบหรือเพิ่ม Features ที่ไม่จำเป็นซึ่งคุณคิดว่า มันอาจจะมีประโยชน์ในอนาคต
การที่คุณไม่สละเวลาเพื่อออกแบบ Application ของคุณ ช่วงเริ่มต้นอาจไม่มีปัญหา แต่ในที่สุดมันจะกลับมาทำร่ยคุณภายหลัง แน่นอนว่า ส่วนใหญ่มันจะส่งผลต่อการ Refactor ซึ่งทำให้คุณเสียเวลามาก (และแรงจูงใจก็จะค่อย ๆ ลดลง) ดังนั้น จงใช้เวลาเพื่อการออกแบบ Application ของคุณให้มากเพียงพอ
Lesson 2: ข้อกำหนดในการเขียน Code (Code Conventions)
ส่วนหลัก ๆ ของการจัดโครงสร้าง Code ก็คือ การมีข้อกำหนดในการเขียน Code โดยข้อกำหนดในการเขียน Code เป็นสิ่งที่จำเป็นสำหรับทุก Projects หากคุณไม่ตั้งข้อกำหนดในการเขียน Code, Code ของคุณก็จะอ่านยากขึ้น
ทำ List ข้อตกลงการเขียน Code เช่น วิธีการประกาศตัวแปร และข้อตกลงในการตั้งชื่อ เป็นต้น คุณสามารถเพิ่มข้อกำหนดลงใน List นี้ได้โดยไม่จำกัด และสามารถปรับเปลี่ยนให้เหมาะกับคุณและทีมของคุณได้ จงอย่าลังเลที่จะเพิ่มข้อกำหนดใหม่ ๆ ลงใน List หากทีมของคุณอยากให้มี เช่นเดียวกับการลบข้อกำหนดออกจาก List ตามความเหมาะสม
ที่สำคัญคือ เมื่อคุณตกลงที่จะใช้ข้อกำหนดนั้นแล้ว ก็ควรยึดถือมันไปตลอดทั้ง Projects
Lesson 3: Guidelines สำหรับ Classes และ Functions
เพื่อให้ Classes และ Functions ของคุณสามารถ Read และ Maintain ได้ มี Guidelines บางประการที่คุณสามารถปฏิบัติตามได้:
พยายามทำให้ Classes และ Functions มีขนาดเล็ก
ทำให้ Classes และ Functions เป็นไปตามหลักการ Single Responsibility Principle (SRP)
การทำให้ Classes และ Functions มีขนาดเล็กที่สุดเท่าที่จะทำได้ จะช่วยให้ทำความเข้าใจ Code ได้ง่ายขึ้น
การปฏิบัติตามหลักการ Single Responsibility Principle ซึ่งหมายถึง ทุก Class และ Function ควรจะทำหน้าที่แค่ 1 อย่างเท่านั้น ซึ่งด้วยแนวทางนี้ จะช่วยให้ Functions และ Classes ของคุณเล็กลง แต่ถึงอย่างไรก็ต้องมีจำนวนที่สมเหตุสมผล เพราะการมี Classes ขนาดเล็กมาก ๆ ในจำนวนที่มากเกินไป อาจส่งผลเสียกว่าการมี Classes ที่ใหญ่ขึ้นแต่มีจำนวนที่ไม่มากเกินไป
สมมติมี Functions ขนาดใหญ่ที่มีการ Fetch, จัดการ และ จัดเก็บข้อมูล ซึ่งไม่สามารถทำได้ตามหลักการ SRP ทางเลือกก็คือ คุณต้องแยก Functions ขนาดใหญ่ดังกล่าวออกเป็น 3 Functions เล็ก ๆ คือ Function สำหรับ Fetch ข้อมูล, สำหรับจัดการ และ สำหรับจัดเก็บข้อมูล
Lesson 4: ใช้ Design Patterns
การเรียนรู้เกี่ยวกับ Design Patterns และวิธีการทำงานของมัน ถือเป็นวิธีที่ดีในการช่วยจัดการกับโครงสร้าง Code ของคุณ และการเขียน Code ที่ Readable และ Maintainable ได้ดี
การรู้ว่า Design Patterns ใดเหมาะที่จะใช้ในสถานการณ์ไหน จะเป็นประโยชน์กับคุณโดยที่ไม่ต้องเสียเวลาหา Solutions ที่เหมาะสม เพียงแค่ทำตาม Design Principle แล้ว Code ของคุณจะอยู่ในสภาพที่ดีอย่างแน่นอน
สิ่งที่ควรระวังคือ อย่าให้ Design Patterns ที่มากเกินไป – ซึ่งเป็นข้อผิดพลาดที่พบบ่อยที่สุดเมื่อพูดถึงการใช้รูปแบบการออกแบบ แม้ว่าคุณจะสามารถใช้ Design Patterns ในสถานการณ์นั้น ๆ ได้ แต่ก็ไม่ได้หมายความว่าคุณควรจะทำ ซึ่งสิ่งนี้จะส่งผลเสีย ทำให้คุณได้ Application ที่ Overengineered ซึ่งยากต่อการทำความเข้าใจสำหรับ Developer คนอื่น
Lesson 5: เขียน Unit Tests
การเขียน Unit Tests จะส่งผลที่ยอดเยี่ยมในแง่ที่ช่วยให้คุณจัดโครงสร้าง Code ของคุณ เพื่อให้สามารถเขียน Unit Tests สำหรับ Code ของคุณ อย่างน้อย Code นั้นควรมีโครงสร้างที่เหมาะสม
คุณอาจเคยได้ยินเกี่ยวกับ Code ที่ Untestable ก่อนหน้านี้ หรือคุณอาจเขียน Code แบบนั้นเองด้วยซ้ำ หากคุณไม่ทราบวิธีการเขียน Unit Test สำหรับ Code นั่นอาจเป็นเพราะมันทำอะไรหลายอย่างมากเกินไป หรือถูก Design มาไม่ดีเท่าที่ควร
ไม่ว่าจะด้วยวิธีใดก็ตาม พอจะกล่าวได้ว่าการที่ต้องจัดการกับ Untestable Code อาจมีสาเหตุมีจาก Code ที่มีโครงสร้างไม่ดี คุณจะพบว่าการ Refactor ส่วนใหญ่ มักจะเกิดขึ้นเมื่อคุณเจอกับ Untestable Code
Unit Tests ถือเป็นอีกหนึ่งแนวทางในการบังคับ(แบบกลาย ๆ) ให้คุณสร้าง Code ที่มีโครงสร้าง
ISM Technology Recruitment Ltd. (#1 Tech Recruiter in Thailand) เราเชี่ยวชาญในธุรกิจ IT Recruitment & IT Outsourcing โดยเฉพาะ เปิดทำการกว่า 30 ปี มีพนักงานทุกสายและทุกระดับทางด้าน IT ที่ได้ร่วมงานกับลูกค้าองค์กรใหญ่ที่มีชื่อเสียงและบริษัทข้ามชาติมากมาย หากคุณเป็นคน IT ที่อยากทำงานท้าทายและร่วมงานกับองค์กรชั้นนำ สามารถฝากประวัติการทำงาน (Resume) ของคุณไว้กับ ISM ได้ที่ https://www.ismtech.net/submit-your-resume แล้วคุณจะพบว่าอนาคตและโอกาสก้าวหน้ากำลังรอคุณอยู่