สิ่งที่นักพัฒนาที่ดีพึงมี คือ มีจมูกที่ดี
หมายความว่าต้องหัดดมกลิ่นของ code ว่า
code เหล่านั้นมีกลิ่นที่ไม่ดี ไม่พึงประสงค์หรือไม่ ?
ซึ่งเราจะเรียกว่า Code Smell
แต่ปัญหาหลัก ๆ คือ เหล่านักพัฒนานั้น จมูกไม่ค่อยดีนะสิ
มักจะไม่ได้กลิ่นอะไรจาก code เลย !!
ดังนั้นสิ่งแรกที่นักพัฒนาควรทำคือ อ่าน และ ศึกษา
รูปแบบของ code ที่ไม่ดีจากหนังสือ Refactoring : Improving the Design of Existing code
มาดูกันว่า Code Smell ที่เจอบ่อย ๆ มีลักษณะอย่างไรบ้าง ?
1. ไม่มีการกำหนดรูปแบบของ code (Coding Standard)
บางทีม บางบริษัทอาจจะบอกว่า
เรามี coding standard guideline นะ แต่เป็นเอกสาร !!
ปัญหาคือ ไม่มีใครรู้
ปัญหาคือ ไม่มีใครทำตาม
ผลที่ตามมาก็คือ รูปแบบของ code มั่วไปหมด
ดังนั้นสิ่งที่ต้องทำก็คือ สรุป Coding standard ร่วมกันซะ
จากนั้นเริ่มง่าย ๆ จากการกำหนดไว้ใน Text editor และ IDE ของแต่ละคน
ต่อมาใส่ขั้นตอนการตรวจสอบ Coding standard ในระบบ Continuous Integration (CI) อีกด้วย
ปล. แค่เรื่อง Tab กับ Spacebar ยังเป็นเรื่องกันเลย !!
2. Code ที่ไม่สามารถทดสอบได้ หรือ ทดสอบได้ยากมาก ๆ
นักพัฒนาตอบได้ไหมว่า
Code ที่เขียนขึ้นมานั้นมันทำงานได้อย่างถูกต้องหรือไม่ ?
Code ที่เขียนขึ้นมานั้นมันส่งผลกระทบต่อส่วนอื่น ๆ หรือไม่ ?
ถ้าไม่สามารถตอบได้
ก็เขียน test เถอะครับ
เพื่อทำให้ code ที่เขียนขึ้นมาง่ายต่อการทดสอบ
เพื่อทำให้ระบบที่สร้างขึ้นมาง่ายต่อการทดสอบ
มิเช่นนั้น code ของระบบ อาจจะผูกมัดกันอย่างแรง
ทำให้ยากต่อการทดสอบ
ทำให้การแก้ไขแต่ละอย่างส่งผลกระทบต่อส่วนอื่น ๆ อย่างมาก
3. Code ที่มึน ๆ งง ๆ สับสนวุ่นวาย
เคยเจอไหมที่ comment หรือ document ไม่ตรงกับ code
เคยเจอไหมที่เจอ Log มากกว่า code
เคยเจอไหมที่ตัวแปรใน code มีแต่ i, j, k, x, y, z
มีตัวแปร boolean ขยะจำนวนมาก เช่น ทำงานสำเร็จ return true แต่ถ้าไม่จะเป็น false
ตัวแปรเหล่านั้นมักจะชื่อ flag
เราลบ code กันดีไหม ?
สุดท้ายอย่า Copy and Paste code แบบไม่เข้าใจมันจริง ๆ
บางคนบอกว่าวิธีการนี้มันคือ DRY (Don’t Repeat Yourself)
แต่ในความเป็นจริงมันเป็นวิธีการของคนขี้เกียจมากกว่า
ดังนั้นก่อนนำไปใช้งานหยุดคิด ตั้งสตินิดนึง
วันนี้จมูกของคุณดีไหม ได้กลิ่นอะไรจาก code หรือไม่ ?
Reference Websites
https://medium.freecodecamp.com/do-not-allow-bad-smells-in-your-java-code-4e8ad244393#.j013zfh1a