นึกภาพว่าเรากำลังสร้างบ้านตุ๊กตาด้วยกล่องกระดาษ, ปากกาสี, และกรรไกร แต่แทนที่จะเริ่มตัดและวาดเลย เรากลับนั่งคิดถึงการเพิ่มสไลเดอร์, ลิฟต์, หรือระบบปรับอากาศล่วงหน้าทั้งๆ ที่เราไม่แน่ใจว่าเราจะต้องใช้มันจริงๆ หรือไม่ นี่พอทำให้เด็กวัย 8 ขวบเห็นภาพไหม?
YAGNI คือคำบอกเล่าแบบนี้ในโลกของการเขียนโปรแกรม ย่อมาจาก "You Aren't Gonna Need It" หรือเป็นภาษาไทยว่า "เธอคงไม่ต้องการมันหรอก" หลักการนี้บอกเราว่า เวลาเราเขียนโปรแกรม เราควรจะเพิ่มเฉพาะสิ่งที่จำเป็นตอนนั้นเท่านั้น ไม่ควรไปคิดเรื่องฟีเจอร์ที่ "อาจจะ" ใช้ในอนาคตเกินไป
ลองนึกถึงการเขียนโปรแกรมในการจัดการหอพักสำหรับนักศึกษา เราอาจจะต้องการให้มีระบบจองห้อง, ระบบชำระเงิน และระบบแจ้งซ่อม ถ้าเรานำหลักการ YAGNI มาใช้ ในตอนเริ่มต้นเราจะเขียนโปรแกรมเฉพาะส่วนที่จำเป็นที่สุด คือระบบจองห้องก่อน
ความคิดที่อาจจะเพิ่มระบบการบินเสมือนจริงภายในห้องพัก คือความคิดที่น่าตื่นเต้น แต่ตามหลัก YAGNI เราจะไม่เพิ่มเข้าไปจนกว่าจะมีความต้องการจริงๆ จากนักศึกษา
# โค้ด Python: สำหรับการจองห้องพัก
class Room:
def __init__(self, room_number):
self.room_number = room_number
self.is_booked = False
class BookingSystem:
def book_room(self, room):
if not room.is_booked:
room.is_booked = True
return f"Room {room.room_number} is booked."
else:
return f"Room {room.room_number} is not available."
# ใช้งานระบบจองห้อง
room101 = Room(101)
booking_system = BookingSystem()
print(booking_system.book_room(room101)) # Room 101 is booked.
# ดู? ไม่ต้องมีระบบบินเสมือนจริง เราทำระบบจองห้องที่ทำงานได้จริงแล้ว
ในตัวอย่างนี้ เราไม่ได้สร้างระบบชำระเงินหรือระบบแจ้งซ่อมเลย จนกว่าจะมีความจำเป็นจริงๆ นั่นหมายความว่าเราได้สร้างโปรแกรมที่เรียบง่ายและตอบสนองความต้องการขั้นพื้นฐานโดยไม่เพิ่มความซับซ้อนที่ไม่จำเป็น
YAGNI เป็นหลักการสำคัญในการฝึกฝนและพัฒนาทักษะการเขียนโปรแกรมจริงๆ และที่ Expert-Programming-Tutor (EPT) เรามีหลักสูตรและวิธีการสอนที่ทำให้คุณเข้าใจหลักการนี้และใช้มันได้อย่างมืออาชีพ ต่อให้วันนี้คุณอาจจะไม่เข้าใจหลักการ YAGNI แต่เมื่อคุณเรียนรู้และปฏิบัติมันผ่านการฝึกหัดที่เหมาะสม คุณจะสามารถเขียนโปรแกรมที่มีประสิทธิภาพและสามารถรับมือกับความต้องการที่เปลี่ยนแปลงได้ง่ายในอนาคต
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM