สิ่งที่นักพัฒนาที่ดีพึงมี คือ มีจมูกที่ดี
หมายความว่าต้องหัดดมกลิ่นของ 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