Một phần của câu trả lời là Tái cấu trúc .
Đầu tiên, bắt đầu viết bài kiểm tra đơn vị để đảm bảo rằng bạn không vô tình phá vỡ bất cứ điều gì với những thay đổi của bạn. Sau đó bắt đầu cải tiến thiết kế, loại bỏ trùng lặp, vv trong các bước nhỏ, chạy thử nghiệm đơn vị của bạn sau mỗi bước, khắc phục mọi sự cố nếu bất kỳ thử nghiệm nào thất bại hoặc hoàn nguyên ngay lập tức nếu bạn gặp phải vấn đề lớn hơn bạn có thể giải quyết dễ dàng.
Phần khác là giáo dục .
Mọi người phải được dạy không để lại mã xấu phía sau. Đây chắc chắn là một cuộc chiến lâu dài, vì thói quen và quá trình suy nghĩ rất khó (đôi khi thậm chí là không thể) thay đổi . Tuy nhiên, không có nó, bạn sẽ tiếp tục nhận được một nguồn cung cấp mã xấu vô tận để được tái cấu trúc.
Bạn có thể chọn thực hiện đánh giá mã nhóm để thảo luận mở về thói quen mã hóa tốt và xấu, và truyền bá công đức trước đây. Nói "bạn phải (không) viết mã như thế này là không đủ", bạn cần thuyết phục mọi người bằng logic và sự thật phũ phàng. Giống như "nếu bạn có đoạn phương thức này được nhân đôi qua codebase n lần, bạn nghĩ cơ hội nào nếu một lỗi được tìm thấy trong phương thức đó, nó sẽ được sửa trong mỗi bản sao của mã phương thức?"
Công ty của bạn cũng có thể cần sửa đổi các tiêu chí khuyến khích và chấp nhận cho các chuyên gia tư vấn - nếu họ có thể thoát khỏi việc viết mã cẩu thả, họ chắc chắn sẽ tiếp tục chọn con đường dễ dàng hơn. Nếu công ty tiếp tục định giá "giao hàng nhanh" trong khả năng duy trì dài hạn, sẽ không có gì thay đổi :-( Vì vậy, bạn cũng có thể cần thảo luận vấn đề này với quản lý. Một cách để làm cho họ hiểu là: tái cấu trúc có nghĩa là giữ mã sạch, dễ dàng hiểu và duy trì. Bỏ qua tái cấu trúc cũng giống như nợ trong thẻ tín dụng của bạn. Bạn có thể thoát khỏi nó trong một thời gian, nhưng nếu bạn không chủ động quản lý thói quen mua hàng và các khoản nợ của mình, chắc chắn nó sẽ sụp đổ trên vai bạn một ngày nào đó. Trong vòng đời của một dự án phần mềm, phá sản là khi dự án trở nên không thể hiểu được: việc viết lại từ đầu trở nên dễ dàng hơn là thêm một tính năng mới vào cơ sở mã hiện có. Hoặc người dùng đã quá chán ngán với mức độ hỗ trợ và tính năng kém hơn mà họ chỉ đơn giản chuyển sang cạnh tranh.