(ฉันถือว่าคำถามนี้ทำจากมุมมองการออกแบบโค้ด / สถาปัตยกรรมไม่ใช่มุมมองการออกแบบเกมแม้ว่าคำตอบอย่างน้อยในระดับหนึ่งจะใช้ได้กับทั้งคู่)
ดังที่ได้กล่าวไปแล้วว่าคุณต้องการทั้งสองอย่างและคุณจำเป็นต้องสร้างสมดุล การออกแบบเกินกำหนดและการออกแบบโฟลว์ / โครงสร้างของคุณต่ำเกินไปอาจทำให้เกิดปัญหาได้ มันยากที่จะพูดว่าอะไรคือความสมดุลที่เหมาะสม แต่โดยทั่วไปฉันพบว่าฉันต้องมีความคิดที่คลุมเครือว่าส่วนที่เหลือของรหัสจะเข้าร่วมกับสิ่งที่ฉันเขียนโปรแกรมในขณะนี้และคิดเกี่ยวกับปัญหาที่เป็นไปได้ ไม่เช่นนั้นฉันมักจะ "เขียนรหัสตัวเองไปสู่จุดจบ" - เข้าสู่สถานการณ์ที่ฉันรู้ว่า "โอเคตอนนี้ด้วยวิธีที่ฉันแก้ไขปัญหานี้ฉันได้สร้างปัญหาใหม่ซึ่งทำให้วิธีการแก้ปัญหาก่อนหน้าทั้งหมดของฉัน (หรือมากกว่านั้น ) ไร้ประโยชน์ "
โดยทั่วไปแล้วในความคิดของฉันคุณสามารถตัดสินได้อย่างคร่าว ๆ ว่าคุณมีความสมดุลที่เหมาะสมหรือไม่โดยการคิดถึงสถานการณ์ "ในกรณีที่" ใน "สิ่งที่ฉันจะทำภายหลัง (เมื่อทุกอย่างถูกนำไปใช้อย่างเต็มที่ในกระบวนทัศน์ที่คล้ายกัน ส่วน A ต้องทำงานแตกต่างกันเล็กน้อยซึ่งจะหมายความว่าฉันต้องทำใหม่ส่วน B ที่เชื่อมต่อกับมันรองรับการเปลี่ยนแปลงหรือไม่ " หากการเปลี่ยนแปลงทางสถาปัตยกรรมในส่วนหนึ่งไม่ต้องการให้คุณเปลี่ยนมากกว่าหนึ่งส่วนหรือสองส่วนและการเปลี่ยนแปลงไม่ได้ซ้อนกัน (หมายความว่าในทางกลับกันคุณต้องเปลี่ยนส่วนถัดไปที่เชื่อมต่อกับส่วน B แล้วเชื่อมต่อกับชิ้นส่วน พวกเขาเป็นต้น) โค้ดถูกแบ่งออกเป็นวิธีที่ค่อนข้างดี
แต่จริงๆแล้วนี่คือสิ่งที่คุณจะได้รับหลังจากได้รับประสบการณ์ นี่เป็นเพียงบางส่วนที่ทุกคนให้คำแนะนำเบื้องต้นเกี่ยวกับโค้ดแรกที่รู้จักและใช้งานง่าย (Breakout / Tetris / Snake) และทำมันอย่างสมบูรณ์ด้วยเมนูเสียงเอฟเฟ็กต์ทุกอย่างที่ทำให้เกมเสร็จสมบูรณ์ - ดีกว่า เพื่อทำให้โครงงานเล็กลงและทำมัน (ไม่ว่าจะในทางที่ดีหรือไม่ดี) จะช่วยให้คุณได้รับความรู้สึกว่าการตัดสินใจทางสถาปัตยกรรมต่างๆนั้นมีผลต่อการตัดสินใจของไกลแค่ไหน