ส่วนหนึ่งของคำตอบคือRefactoring
ก่อนอื่นให้เริ่มเขียนการทดสอบหน่วยเพื่อให้แน่ใจว่าคุณจะไม่ผิดพลาดอะไรกับการเปลี่ยนแปลง จากนั้นเริ่มปรับปรุงการออกแบบการลบการทำซ้ำเป็นต้นในขั้นตอนเล็ก ๆ ทำการทดสอบหน่วยของคุณหลังจากแต่ละขั้นตอนแก้ไขปัญหาใด ๆ หากการทดสอบใด ๆ ล้มเหลวหรือย้อนกลับทันทีหากคุณพบปัญหาที่ใหญ่กว่าที่คุณสามารถแก้ไขได้อย่างง่ายดาย
อีกส่วนหนึ่งคือการศึกษา
ผู้คนจะต้องได้รับการสอนไม่ให้ทิ้งรหัสที่ไม่ดีไว้เบื้องหลัง นี้แน่นอนการต่อสู้ในระยะยาวเป็นนิสัยและกระบวนการคิดว่าจะยาก (บางครั้งก็เป็นไปไม่ได้) มีการเปลี่ยนแปลง อย่างไรก็ตามหากไม่มีมันคุณจะยังคงได้รับโค้ดที่ไม่ดีที่ส่งเสียงกรีดร้องอย่างไม่สิ้นสุดเพื่อนำไปสร้างใหม่
คุณอาจเลือกที่จะทำการทบทวนรหัสกลุ่มเพื่อเปิดการอภิปรายเกี่ยวกับนิสัยการเขียนโค้ดที่ดีและไม่ดีและกระจายข้อดีของอดีต ไม่เพียงพอที่จะพูดว่า "คุณต้อง (ไม่) เขียนโค้ดแบบนี้" คุณต้องโน้มน้าวผู้คนด้วยเหตุผลและข้อเท็จจริงที่ยาก เช่น"ถ้าคุณมีวิธีการทำซ้ำส่วนนี้ใน codebase n ครั้งคุณคิดว่าโอกาสที่จะเกิดข้อผิดพลาดหากพบข้อผิดพลาดในวิธีการนั้นจะได้รับการแก้ไขในแต่ละชุดของรหัสวิธีการ"
บริษัท ของคุณอาจจำเป็นต้องแก้ไขสิ่งจูงใจและเกณฑ์การยอมรับสำหรับที่ปรึกษา - หากพวกเขาสามารถหลีกเลี่ยงการเขียนโค้ดเลอะเทอะพวกเขาจะเลือกเส้นทางที่ง่ายขึ้น หาก บริษัท ประเมินมูลค่า "การจัดส่งที่รวดเร็ว" ตลอดระยะเวลาการบำรุงรักษาจะไม่มีอะไรเปลี่ยนแปลง :-( ดังนั้นคุณอาจต้องปรึกษาเรื่องนี้กับฝ่ายบริหารด้วยวิธีหนึ่งที่จะทำให้พวกเขาเข้าใจคือการ refactoring หมายถึงการรักษารหัสให้สะอาด ทำความเข้าใจและบำรุงรักษาการละเว้นการปรับโครงสร้างใหม่นั้นเป็นเหมือนการสะสมหนี้ในบัตรเครดิตของคุณ. คุณสามารถหนีไปได้ซักพัก แต่ถ้าคุณไม่ได้จัดการนิสัยการซื้อและหนี้สินของคุณอย่างจริงจังวันหนึ่งก็จะพังทลายลงบนไหล่ของคุณอย่างหลีกเลี่ยงไม่ได้ ในชีวิตของโครงการซอฟต์แวร์การล้มละลายคือเมื่อโครงการไม่มีความเคลื่อนไหว: มันง่ายกว่าที่จะเขียนใหม่ตั้งแต่ต้นแทนที่จะเพิ่มคุณสมบัติใหม่ให้กับฐานข้อมูลที่มีอยู่ หรือผู้ใช้จะเบื่อหน่ายกับการสนับสนุนระดับล่างและคุณสมบัติที่พวกเขาเพียงแค่เปลี่ยนไปใช้การแข่งขัน