code-smell Archive

[แปล] ทำความเข้าใจเกี่ยวกับ TDD และ Unit test กันอีกสักหน่อย

เช้านี้นั่งอ่านบทความเก่า ๆ ที่เก็บเอาไว้คือ 5 Common Misconceptions About TDD & Unit Tests อธิบายเกี่ยวกับความเข้าใจผิดเกี่ยวกับ TDD และ Unit Test จึงทำการแปลและสรุปเนื้อหาบางส่วนไว้นิดหน่อย

Read More…

ทำไมต้องใช้ Lazy Loading ใน Data Model ด้วยนะ ?

หลังจากที่พูดคุยเรื่อง ORM (Object Relation Mapping) ก็พบว่ามักจะพูดคุยเรื่องปัญหาของ dependency graph ที่เกิดขึ้น ซึ่งส่วนใหญ่มักจะประสบภัยกับเรื่องนี้อย่างมาก เมื่อระบบเริ่มมี model หรือ entity และความสัมพันธ์มากขึ้น สุดท้ายส่งผลให้ระบบพังสิครับ หรือไม่เช่นนั้นก็ memory หมด (OutOfMemory) ทำไมถึงเป็นเช่นนั้นนะ

Read More…

[Refactoring code] ว่าด้วยเรื่อง Creation Method

เนื่องจากทำการ review code ของระบบที่พัฒนาด้วยภาษา Swift แล้วพบว่าการสร้าง object บางตัวนั้น สามารถสร้างได้หลายแบบ ทำให้มี constructor จำนวนมาก !! ซึ่งมันเป็น Code Smell อย่างหนึ่ง ดังนั้นได้เวลาปรับปรุง code ให้ดีขึ้นแล้วนะ

Read More…

อย่าปล่อยให้ code มีกลิ่นที่ไม่ดี !!

สิ่งที่นักพัฒนาที่ดีพึงมี คือ มีจมูกที่ดี หมายความว่าต้องหัดดมกลิ่นของ code ว่า code เหล่านั้นมีกลิ่นที่ไม่ดี ไม่พึงประสงค์หรือไม่ ? ซึ่งเราจะเรียกว่า Code Smell แต่ปัญหาหลัก ๆ คือ เหล่านักพัฒนานั้น จมูกไม่ค่อยดีนะสิ มักจะไม่ได้กลิ่นอะไรจาก code เลย !! ดังนั้นสิ่งแรกที่นักพัฒนาควรทำคือ อ่าน และ ศึกษา รูปแบบของ code ที่ไม่ดีจากหนังสือ Refactoring : Improving the Design of Existing code มาดูกันว่า Code Smell ที่เจอบ่อย ๆ มีลักษณะอย่างไรบ้าง

Read More…

Developer ส่วนใหญ่ไม่รู้จัก Code Smell ?

จาก Newsletter ของคุณ Sandi Metz เป็นผู้เขียนหนังสือ Practical Object-Oriented Design in Ruby (POODR) ได้อธิบายเรื่องของ Code Smell ไว้อย่างน่าสนใจ จึงได้นำมาแปล และ สรุปไว้นิดหน่อย ซึ่งอ่านแล้วมันเจ็บแสบน่าดู แต่ผมเชื่อว่า มันคือเรื่องจริงนะ !!

Read More…

Developer ที่ดีควรมี “จมูก” ที่ดีนะ

จากคำกล่าวที่ว่า If it stinks, change it. —Grandma Beck, discussing child-rearing philosophy ถ้ามันเหม็น ก็ทำการเปลี่ยนมันซะ Code ก็เช่นกัน !! แต่ปัญหาที่ developer มักพบเจอคือ code แบบไหนล่ะ ที่ควรแก้ไข !!

Read More…

Java Code Smell :: ทำไมถึงต้องใช้ cast type และ instanceof

วันนี้ทำการ review code มาเจอ code ที่น่าสนใจ เกี่ยวกับการ cast type ของ object และการใช้ instanceof มาเพื่อตรวจสอบว่า เป็น instance ของ class ที่เราต้องการหรือไม่ มาดูกันว่ามันเป็นอย่างไร

Read More…

Connascence มันคืออะไรในการพัฒนา software นะ

วันนี้อ่านบทความจาก Twitter พบว่ามีการพูดถึงคำว่า Connascence ลองไปเปิด dictionary เพื่อแปลเป็นภาษาไทยคือ ปัจจัยที่เกิดร่วมกัน !! งงไปกันใหญ่นะสิ ดังนั้น จึงลองไปค้นหาใน Wikipedia ก็ได้ความมาว่า มันคือ metric ในการวัดคุณภาพของ software ซึ่งคิดค้นโดยคุณ Meilir Page-Jones ใช้สำหรับอธิบายสาเหตุของ complexity และ dependency ต่างๆ ในโลกของ Object Oriented Design (OOD) เช่น coupling หรือ การผูกมัด นั่นเอง ดังนั้นมาดูกันหน่อยว่า Connascence มันเป็นอย่างไร และ สำคัญอย่างไรในการพัฒนา software

Read More…

ที่มาของการตรวจสอบเงื่อนไขต่างๆ ใน code

ก่อนที่เราจะลดจำนวนการตรวจสอบเงื่อนไขต่างๆ ใน code (condition branch) นั้น มาดูกันหน่อยว่า ทำไมเราต้องทำการตรวจสอบต่างๆ ด้วย เช่นพวก if-statement และ switch-case เป็นต้น มาดูกันเลยดีกว่า

Read More…

Part 1 :: ว่าด้วยเรื่องของ Code Smell ที่เกิดขึ้นภายในคลาส

จากที่ผมอธิบายเกี่ยวกับ เรื่อง method สั้นๆ มันดีกว่า method ยาวๆ อย่างไร การลดความซ้ำซ้อนของ code ลง ทั้งการ refactor code และการนำ pattern ต่างๆ มาใช้งาน ซึ่งสิ่งที่อธิบายไปนั้น ล้วนแล้วแต่เป็นสิ่งบ่งบอกว่า code มีปัญหา โดยสิ่งที่บ่งบอกว่า code ของเราน่าจะมีปัญหานั้น ในทางเทคนิคจะเรียกว่า Code Smell ดังนั้น เรามาดูกันก่อนว่า Code Smell มันมีอะไรบ้าง เพื่อให้สามารถหาวิธีการแก้ไขหรือป้องกันได้

Read More…