DRY & WET กับเรื่องของการเพิ่มประสิทธิภาพในการทำงาน



ในเรื่องของการพัฒนาโปรแกรม มีแนวคิด 2 อย่างที่ถูกนำมาใช้เรื่อยๆเพื่อปรับปรุงการพัฒนาโปรแกรมให้มีประสิทธิผลมากขึ้น คือเรื่องของ DRY กับ WET ซึ่งจริงๆแล้วผมคิดว่ามันมาประยุกต์ใช้ในเรื่องอื่นๆได้ ลองมาทำความรู้จักเรื่อง DRY กับ WET กันดูครับ 😄

DRY

DRY ย่อมาจาก Don’t Repeat Yourself หรือบางทีก็ใช้ว่า Do not Repeat Yourself คือเรื่องของการหาวิธีที่จะไม่ต้องทำอะไรซ้ำๆโดยไม่จำเป็น เพราะการทำอะไรซ้ำๆโดยไม่จำเป็นนั้น อาจทำให้เกิดความผิดพลาดได้ง่าย และต้องเสียเวลาในการทำงานเพิ่มขึ้นโดยเปล่าประโยชน์ ในทางการพัฒนาโปรแกรมเราก็มักจะทำการแยกส่วนที่ต้องทำซ้ำๆออกมาเป็นฟังก์ชั่นหรือโมดูลต่างหาก ซึ่งเรื่องนี้ก็คงไม่ต่างกับการทำงานเรื่องอื่นๆแม้ไม่ใช่การพัฒนาโปรแกรม ยกตัวอย่างเช่น ทุกครั้งที่เราต้องทำรายงานการประชุม ก็มักจะต้องเขียนโครงหัวข้อ, วาระการประชุม ฯลฯ เหมือนๆกันทุกครับ เราก็สามารถประยุกต์ DRY มาใช้ได้โดยอาจจะเขียนโครงนี้แล้ว save เป็นต้นฉบับไว้ แล้วนำมาเรียกใช้เมื่อต้องการ ก็เป็นการลดงานของเราได้เป็นอย่างดี

WET

WET ก็ตรงข้ามกับ DRY ซึ่งอาจจะย่อมาได้จากหลายคำ เช่น “write every time”, “write everything twice”, “we enjoy typing” or “waste everyone’s time” ซึ่งทุกอันก็คือการทำสิ่งซ้ำๆกันโดยไม่จำเป็น (*คำว่า write ในที่นี้หมายถึงการเขียนโปรแกรม) ซึ่งมันก็ตรงข้ามกับ DRY เรื่องของ WET นี้ก็อาจจะยกตัวอย่างเรื่องการเขียนรายงานการประชุมได้เช่นกัน คือการทำอะไรซ้ำๆ, จัด Format ซ้ำๆ เหล่านี้ถือเป็น WET ทั้งสิ้น

ในบริบทนี้ เราย่อมเห็นพ้องกันว่า DRY ย่อมดีกว่า WET แต่จะทำอย่างไรให้เราสามารถประยุกต์แนวคิดการทำงานแบบ DRY มาใช้ได้ ในส่วนของการพัฒนาโปรแกรมก็มักจะทำ WET ให้เป็น DRY ด้วยการเขียนโปรแกรมเป็นฟังก์ชั่น, Object หรือโมดูลแทนการเขียนโปรแกรมซ้ำๆ, การใช้ Framework ที่มีอยู่แล้วเพื่อให้สามารถพัฒนาโปรแกรมได้เร็วขึ้น หรือการ Automate งานบางอย่างที่ต้องทำซ้ำๆเพื่อป้องกันการผิดพลาดและเพิ่มความรวดเร็วในการทำงาน

แล้วงานของคุณทำให้ DRY ได้ยังไงบ้างครับ?

https://en.wikipedia.org/wiki/Don%27t_repeat_yourself

อ้างอิง:
 

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Leave a Reply

Your email address will not be published. Required fields are marked *