design-pattern Archive

ว่าด้วยเรื่องของ Design for failure

จากบทความเรื่อง Software Architecture and Design InfoQ Trends Report :: April 2022 จาก InfoQ ม่ีเรื่องที่น่าสนใจมากมายหนึ่งในนั้นคือ Design for failureหรือการออกแบบระบบเพื่อให้สามารถรับมือกับความผิดพลาดได้ทั้งความผิดพลาดที่เราคาดหวังและไม่คาดหวังได้

Read More…

สรุปการแบ่งปันเรื่อง Functional Interface ใน Java 8

ใน Java 8 นั้นมี feature ที่น่าสนใจมากมาย แน่นอนว่า ความสามารถต่าง ๆ นั้นถูกสร้างขึ้นมา เพื่อลดปัญหาที่เกิดจากตัวภาษา เช่น Lambda Functional Interface Default method ใน interface เมื่อนำมารวมกับแนวคิดต่าง ๆ จาก Design Pattern ทำให้เห็นภาพต่าง ๆ ชัดเจนมากขึ้น

Read More…

[Swift] ทำการ validate ข้อมูลด้วยแนวคิดของ Composite pattern

วันนี้ทำการ review code ของ iOS app ที่พัฒนาด้วยภาษา Swift พบว่ามีส่วนการ validate หรือตรวจสอบข้อมูลจำนวนมาก และรูปแบบ code ที่เขียนบ่อย ๆ เป็นดังนี้ ค่าต้องไม่ว่าง ข้อมูลต้องมีรูปแบบที่ถูกต้องเช่น email , ความยาวของข้อมูล, เป็นตัวเลข เป็นต้น ข้อมูลของ password ซึ่งต้องมีทั้งตัวเลข ตัวพิมพ์เล็กและพิมพ์ใหญ่ และอื่น ๆ อีกมากมาย คำถามก็คือ code ที่เขียนเป็นอย่างไร ? คำตอบก็คือ if-else-if-else ไปเรื่อย ๆ ไงล่ะ !!

Read More…

Defensive Programming :: ทำไมต้องตรวจสอบค่า NULL ด้วย

ผมเคยเขียน blog อธิบายเรื่อง Defensive Programming ไว้แล้ว หนึ่งในเรื่องที่พูดไว้ก็มีหลายเรื่อง แต่มีเรื่องที่น่าสนใจก็คือ การตรวจสอบค่า NULL เราจะลดจำนวนการตรวจสอบลงได้หรือเปล่านะ

Read More…

ว่าด้วยเรื่องของ Singleton pattern ควรเข้าใจก่อนนำมาใช้งาน

ช่วงนี้เห็น code ในรูปแบบของ Singleton Pattern บ่อยมาก ๆ บางครั้งมันถูกใช้เยอะมากเกินไป โดยแบบไร้ซึ่งเหตุผลที่เหมาะสม ทำให้เกิด Singleton Bubble/Overuse หรือ ใช้งานมากจนเกินไป ดังนั้นจึงกลับไปอ่านหนังสือ Design Pattern ของ Gang Of Four (GoF) กันหน่อย รวมทั้งไปอ่านบทความเรื่อง The Little Singleton Pattern ของคุณ Robert C. Martin ซึ่งทำให้เห็นเหตุผลของการนำ Singleton pattern มาใช้งาน

Read More…

[แปล] Make the Magic go away 

อ่านเจอบทความเรื่อง Make the Magic go away เขียนโดยคุณ Robert C. Martin หรือ Uncle Bob ทำการอธิบายถึงการใช้งาน framework ต่าง ๆ ไว้อย่างน่าสนใจ โดยก่อนที่จะนำมาใช้ เราควรเข้าใจมันก่อน !! จะเข้าใจมันได้อย่างไร นั่นคือ คุณต้องเขียนขึ้นมาเองก่อน จากนั้นจึงกลับไปดู framework ต่าง ๆ ว่ามันเหมาะกับงานของเราหรือไม่ ? และเราสามารถอยู่ได้ หรือ พัฒนาระบบได้โดยไม่ต้องพึ่ง framework ได้ไหม ? ดังนั้น จึงขอนำมาแปลในส่วนที่น่าสนใจดังนี้

Read More…

Java :: มาลดความซ้ำซ้อนของการทำงานใน DAO ( Data Access Object )

ในการ review code ของทีม พบว่า ปัญหาเรื่องความซ้ำซ้อนของ code มีอยู่มากมาย หนึ่งในนั้นก็คือ code ที่ซ้ำซ้อนในส่วนของการติดต่อกับฐานข้อมูล ในโลกของภาษา Java นั้น เป็นปัญหาที่น่าจะเจอมากมาย สำหรับคนที่ยังใช้งานผ่าน JDBC (Java Database Conectivity) แบบเดิมๆ แต่ถ้าใครใช้งานผ่านพวก OR mapping และ Spring framework ก็น่าจะไม่ค่อยมีปัญหา แต่สิ่งที่น่าถามคือ คุณรู้หรือไม่ว่าด้านหลังมันทำงานหรือสร้างอย่างไร ? แต่ในบทความนี้จะเน้นเรื่องการ refactor code ส่วนของการติดต่อฐานข้อมูลผ่าน JDBC แบบเดิม ซึ่งมักจะถูกเรียกว่า DAO ( Data Access Object ) หรือว่า Repository ดังนั้นมาดูกันว่ามีขั้นตอนการลดความซ้ำซ้อนของ code ลงอย่างไร

Read More…

Java :: ลด code ที่ซ้ำซ้อน ด้วยการใช้ Template Method Pattern

จากการ review code ของทีมพัฒนาอีกครั้ง พบว่ามี code ที่ซ้ำซ้อน (Duplication) อยู่ชุดหนึ่ง ซึ่งอาจจะเกิดซ้ำแบบนี้ในอนาคตอันใกล้อีก ดังนั้น มาดูกันว่าจะลด code ที่ซ้ำซ้อนเหล่านี้ลงได้อย่างไร

Read More…

Design Pattern คือ ปัญหา หรือ วิธีการแก้ปัญหา

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

Read More…