ฉันเพิ่งอ่านโพสต์บล็อกของBig Big Liesและฉันมีเวลายากที่จะแก้ไขคำโกหกที่สองซึ่งอ้างถึงที่นี่:
(โกหก # 2) รหัสควรได้รับการออกแบบทั่วทั้งโลก
ไม่มีค่าในรหัสที่เป็นรูปแบบหรือแผนที่โลกจินตนาการ ฉันไม่รู้ว่าทำไมอันนี้ถึงน่าสนใจสำหรับโปรแกรมเมอร์บางคน แต่มันเป็นที่นิยมอย่างมาก หากมีจรวดในเกมให้มั่นใจได้ว่ามีคลาส "Rocket" (สมมติว่าโค้ดคือ C ++) ซึ่งมีข้อมูลสำหรับจรวดหนึ่งอันและทำจรวด โดยไม่คำนึงถึงการเปลี่ยนแปลงข้อมูลจริง ๆ หรือการจัดวางข้อมูล หรือสำหรับเรื่องนั้นโดยที่ไม่มีความเข้าใจพื้นฐานว่ามีสิ่งใดสิ่งหนึ่งอยู่คงมากกว่าหนึ่งสิ่ง
แม้ว่าจะมีบทลงโทษมากมายเกี่ยวกับประสิทธิภาพสำหรับการออกแบบประเภทนี้สิ่งที่สำคัญที่สุดคือมันไม่ได้ปรับขนาด เลย หนึ่งร้อยจรวดมีค่าใช้จ่ายหนึ่งร้อยเท่าของจรวด และมีแนวโน้มว่าจะมีราคาสูงกว่านั้นมาก! แม้แต่ผู้ที่ไม่ใช่โปรแกรมเมอร์ก็ไม่ควรมีเหตุผลใด ๆ ประหยัดจากขนาด หากคุณมีอะไรมากกว่านี้ก็ควรจะถูกกว่าไม่แพงกว่า และวิธีที่จะทำคือการออกแบบข้อมูลอย่างถูกต้องและจัดกลุ่มสิ่งต่าง ๆ โดยการแปลงที่คล้ายกัน
นี่คือปัญหาของฉันกับเรื่องโกหกนี้โดยเฉพาะ
มีคุณค่าในการใช้รหัสเป็นแบบจำลอง / แผนที่ของโลกจินตนาการในขณะที่การสร้างแบบจำลองโลกแห่งจินตนาการช่วยอย่างน้อยฉันเองเป็นการมองเห็นและจัดระเบียบรหัส
สำหรับฉันแล้วการมีคลาส "Rocket" เป็นตัวเลือกที่ถูกต้องสมบูรณ์แบบสำหรับชั้นเรียน บางที "จรวด" อาจถูกแบ่งออกเป็นประเภทของจรวดเช่น AGM-114 Hellfire เป็นต้นซึ่งจะมีความแข็งแกร่งของน้ำหนักบรรทุก, ความเร็วสูงสุด, รัศมีการเลี้ยวสูงสุด, ประเภทการเลี้ยวเป้าหมายและอื่น ๆ แต่จรวดทุกประเภทจะต้องมีตำแหน่ง และความเร็ว
แน่นอนว่าการมี 100 จรวดมีราคามากกว่า 1 Rocket หากมี 100 จรวดบนหน้าจอจะต้องมี 100 การคำนวณที่แตกต่างกันเพื่ออัปเดตตำแหน่งของพวกเขา ย่อหน้าที่สองดูเหมือนว่ากำลังอ้างสิทธิ์ว่าหากมี 100 จรวดมันควรมีค่าใช้จ่ายน้อยกว่า 100 การคำนวณเพื่ออัปเดตสถานะหรือไม่
ปัญหาของฉันที่นี่คือผู้เขียนนำเสนอรูปแบบการเขียนโปรแกรม "ข้อบกพร่อง" แต่ไม่ได้นำเสนอวิธีการ "แก้ไข" มัน บางทีฉันอาจเพิ่มความคล้ายคลึงกับคลาส Rocket แต่ฉันอยากจะเข้าใจเหตุผลที่อยู่เบื้องหลังการโกหกนี้ ทางเลือกคืออะไร?