DRY คืออะไร?
DRY – Don’t Repeat Yourself หรือแปลตรงตัวว่า “อย่าทำซ้ำ” เป็นหลักการสำคัญของการเขียนโปรแกรมและการทำงานเชิงวิศวกรรม หลักการนี้เน้นไปที่การลดความซ้ำซ้อน (duplication) ของโค้ด ข้อมูล หรือขั้นตอนการทำงาน เพราะทุกครั้งที่เรามี “สิ่งซ้ำ ๆ” ย่อมมีความเสี่ยงที่จะเกิดข้อผิดพลาด และทำให้การบำรุงรักษายากขึ้น
ในโลกของการพัฒนา Software โดยเฉพาะ Ruby on Rails Framework DRY ถูกออกแบบให้เป็น DNA ของระบบอยู่แล้ว Rails ใช้แนวคิด Convention over Configuration และ Reusable Components เพื่อให้การทำงานมีมาตรฐาน ไม่ต้องกำหนดหรือเขียนซ้ำ ๆ ทุกครั้ง
Don’t Repeat Yourself Ruby on Rails คืออะไร?
Don’t Repeat Yourself Ruby on Rails หรือที่รู้จักกันว่า หลักการ DRY (Don’t Repeat Yourself) คือแนวคิดการเขียนโค้ดและทำงานที่เน้นการ ลดความซ้ำซ้อน (duplication) ทุกครั้งที่มีการเขียนโค้ด ข้อมูล หรือกระบวนการซ้ำกัน มีโอกาสทำให้เกิดความผิดพลาด (bug) และทำให้บำรุงรักษายากขึ้น
ใน Rails มีหลายเครื่องมือและแนวทางที่ช่วยลดความซ้ำซ้อน เช่น
- Convention over Configuration
– นักพัฒนาไม่ต้องมากำหนดไฟล์ config ซ้ำ ๆ เพราะ Rails มีโครงสร้างและมาตรฐานที่กำหนดมาแล้ว - Helper และ Partial
– การเขียน view ที่ซ้ำกันหลายหน้า สามารถแยกออกมาเป็น partial แล้วเรียกใช้งานซ้ำได้ - Model Validation & Callback
– เราไม่ต้องเขียนเงื่อนไขตรวจสอบข้อมูลซ้ำ ๆ ใน controller แต่กำหนด validation ที่ model ก็ใช้ได้ทั้งระบบ - Concerns และ Module
– logic ที่ต้องใช้ร่วมกันหลาย model สามารถย้ายไปไว้ใน concern หรือ module เพื่อเรียกใช้งานได้ง่ายขึ้น
ตัวอย่างโค้ด (ไม่ DRY vs DRY):
# ❌ ไม่ DRY
def price_with_vat(product)
product.price * 1.07
end
def order_total_with_vat(order)
order.items.sum { |i| i.price * 1.07 }
end
# ✅ DRY
module TaxHelper
VAT_RATE = 0.07
def with_vat(amount)
amount * (1 + VAT_RATE)
end
end
DRY ในงานพัฒนา Software
การประยุกต์ใช้ DRY ช่วยให้ Software Development มีประสิทธิภาพขึ้นอย่างชัดเจน
- ลดบั๊ก (Bug Reduction): ถ้ามี logic เดียวแต่เขียนซ้ำในหลายไฟล์ เวลาต้องแก้ไขอาจลืมแก้บางที่ → ทำให้เกิด bug ได้
- เพิ่มความเร็วในการพัฒนา: reuse component หรือ module ที่เคยเขียนแล้ว ลดเวลาการพัฒนา feature ใหม่
- ทำให้ทีมทำงานง่ายขึ้น: โค้ดเข้าใจง่าย ไม่วกวน ช่วยให้นักพัฒนาใหม่เรียนรู้ได้เร็ว
DRY ในงาน Telecom / Engineering
แม้ว่า DRY จะมาจากวงการ Software แต่สามารถประยุกต์ใช้กับ งาน Telecom ได้เช่นกัน โดยหลักการนี้จะช่วยลดงานซ้ำซ้อน และทำให้กระบวนการมีมาตรฐาน เช่น
- Network Configuration
– ถ้าเราต้องคอนฟิก Router, NodeB หรือ BTS หลายตัว ถ้าทำ manual copy-paste ย่อมเสี่ยงผิดพลาด
– ใช้ DRY โดยการทำ template configuration หรือใช้ automation tool เช่น Ansible เพื่อ deploy config หลายเครื่อง - Documentation
– ปัญหาที่เจอบ่อยคือข้อมูลเดียวกันถูกกระจายอยู่หลายไฟล์ เช่น IP Plan อยู่ทั้งใน Excel, Word และ Visio
– DRY แนะนำให้สร้าง Single Source of Truth แล้ว generate report เอกสารออกมา - Process / Workflow
– เช่น การทำ Acceptance Test หรือ On-Service Node
– ถ้าเริ่มทำใหม่ทุกครั้งย่อมใช้เวลามากและไม่สม่ำเสมอ
– ใช้ DRY โดยสร้าง template checklist หรือ standard workflow
ตัวอย่างในงาน Telecom
- ❌ ไม่ DRY: เขียนสคริปต์คอนฟิก VLAN ใหม่ทุกไซต์
- ✅ DRY: เขียน playbook Ansible 1 ไฟล์ แล้วส่ง parameter เช่น
site_name,vlan_id
บทสรุป
Don’t Repeat Yourself (DRY) ไม่ได้เป็นเพียงกฎการเขียนโค้ด แต่เป็นแนวคิดที่สามารถใช้ได้กับทุกงานที่มีความซ้ำซ้อน ทั้ง Software Development และ Telecom Engineering
- ใน Software → ลดบั๊ก, เพิ่มความเร็ว, ทำงานเป็นทีมได้ง่ายขึ้น
- ใน Telecom → ลด human error, มาตรฐานของเอกสารและ config ดีขึ้น, workflow มีประสิทธิภาพ
เมื่อคุณเริ่มมองหาความซ้ำซ้อน และใช้ DRY แทน คุณจะทำงานได้เร็วขึ้น เสถียรมากขึ้น และสามารถ scale ระบบหรือทีมได้อย่างมั่นใจ 🚀