Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

ลองดู code ที่เขียนหน่อยสิว่า มัน DRY หรือ WET กัน ?

$
0
0

duplication

duplication DRY ย่อมาจาก Don’t Repeat Yourself เป็นแนวคิดสำหรับการลดจำนวน code ที่ซ้ำซ้อน WET ย่อมาจาก Write Everything Twice เป็นแนวคิดที่ตรงข้ามกับ DRY โดยสิ้นเชิง คำถามคือ ในปัจจุบัน developer เขียน code กันแบบไหน ระหว่าง DRY กับ WET ? ถ้าตอบว่า WET !!! แนะนำให้พยายาม ลด ละ เลิก เพื่อทำให้ code มัน DRY หรือลดจำนวน code ที่มันซ้ำซ้อนในหลายๆ จุดนั่นเอง

ข้อดีของ DRY ประกอบไปด้วย

เรื่องแรกคือ การดูแลรักษา code ง่ายขึ้น ลองคิดดูสิว่า ในระบบที่มีความซับซ้อนมาก ๆ แถมมี code ที่ทำงานเรื่องเดียวกันหลาย ๆ ที่ มันก็ยากต่อการแก้ไขอย่างแน่นอน เท่าที่พบเจอคือ developer ชอบ copy-and-paste จากที่หนึ่งไปใช้งานอีกที่หนึ่ง ซึ่งถามว่า มันทำงานได้ไหม ตอบได้เลยว่า ได้ แต่มันคือการสร้าง code ที่ซ้ำซ้อนขึ้นมา แถม developer เป็นคนที่ขี้ลืมอีกด้วยว่า ทำอะไรไปแล้วบ้าง ทำอะไรตรงไหนไปบ้าง เรื่องที่สอง คือ ทำให้ code มันอ่านง่ายขึ้น ปัญหาที่พบคือ developer อ่าน code ไม่รู้เรื่อง และ เข้าใจยาก ทำให้ไม่สนใจ code ที่มีอยู่มากนัก ดังนั้น อาจจะทำให้เขียน code ชุดเดิม ๆ ในรูปแบบใหม่ไปเรื่อย ๆ ทำให้เกิด code ตามกลุ่มของ developer ที่เข้ามารับช่วง สุดท้าย code ก็ซ้ำซ้อนในเชิงแนวคิด แต่ต่างในการ implement ดังนั้น ถ้าต้องการปฏิบัติตามแนวคิด DRY แล้ว developer ต้องใช้ความพยายามอย่างมาก ในการเขียน code ให้อ่านง่ายนั่นเอง เรื่องที่สามคือ การ reuse code การ reuse เป็นผลมาจาก การที่เราพบเจอ code ที่ซ้ำซ้อนตั้งแต่ 2 ที่ขึ้นไป ทำให้เราทำการรวมการทำงานนั้นไว้ที่เดียว ดังนั้น การ reuse จะเกิดมาเมื่อ code มันซ้ำซ้อนนั่นเอง ส่งผลทำให้การพัฒนาระบบงานเร็วขึ้น เรื่องที่สี่ คือ ค่าใช้จ่ายในการพัฒนา และ แก้ไขลดลง ยิ่ง code มีจำนวนมากเท่าไร จำนวนคนดูแลก็ต้องมากเท่านั้น นั่นคือเป็นการเพิ่มค่าใช้จ่ายนั่นเอง ทั้งค่าใช้จ่ายจากการพัฒนา ทั้งค่าใช้จ่ายจากการทดสอบ ทั้งค่าใช้จ่ายจากการแก้ไข bug สุดท้ายมันจะส่งผลออกไปยังลูกค้าหรือผู้ใช้งานต่อไป !! เรื่องที่ห้าคือ การทดสอบ ลองคิดดูสิ ถ้า code มันซ้ำซ้อนมาก ๆ การทดสอบก็ต้องมากเช่นกัน แต่ถ้าแก้ไข code ซ้ำ ๆ ออกไป การทดสอบก็ลดลงไปมาก

การทำตามแนวคิด DRY ก็ต้องใช้แบบมีสติด้วยเช่นกัน

เนื่องจาก code บางส่วนอาจจะเหมือนกันมาก ๆ แต่กลับใช้กันคนละเรื่อง ไม่เกี่ยวกัยเลย หรือรวมกันแล้ว กลับทำให้การดูแลมากกว่าเดิม ดังนั้น ก็ไม่ควรรวมกันนะ !! หรือบางครั้งทำเยอะเกินไป หรือ Over DRY !! ก็อาจจะทำให้ code อ่านยาก เข้าใจยากขึ้นไปอีก ซึ่งเป็นสิ่งที่บอกว่า คุณกำลังหลงทาง และแนวคิด DRY นั้น ไม่ได้ใช้เฉพาะ code เท่านั้นนะ แต่สามารถนำไปใช้กับสิ่งอื่น ๆ ได้อีก เช่น Document, Database design และ testing เป็นต้น

สุดท้ายแล้ว

ถ้ามีการความต้องการเปลี่ยนแปลงเรื่องใดเรื่องหนึ่งแล้ว พบว่า ต้องทำการแก้ไขระบบในหลาย ๆ ส่วน หรือแก้ไขเรื่องเดิม ๆ หลาย ๆ ที่ นั่นแสดงว่า code และ ระบบของคุณไม่เป็นไปตามแนวคิดของ DRY ซึ่งควรปรับปรุง และ เปลี่ยนแปลงได้แล้ว ไม่เช่นนั้น มันจะกลายเป็นปัญหาที่มาทำร้ายตัวคุณเอง
ถ้าคุณต้องการพร้อมรับต่อการเปลี่ยนแปลงอยู่อย่างเสมอ จำเป็นต้องปรับปรุง code ให้พร้อมด้วย
Reference Websites https://dzone.com/articles/is-your-code-dry-or-wet http://c2.com/cgi/wiki?DeveloperBillOfRights

Viewing all articles
Browse latest Browse all 1997

Trending Articles