Tôi không có nhiều may mắn với những thay đổi nhỏ khi mã tôi kế thừa thực sự tệ. Về lý thuyết, phương pháp gia tăng nhỏ có vẻ tốt, nhưng trong thực tế tất cả nó kết thúc với là một ứng dụng tốt hơn, nhưng vẫn kém được thiết kế mà mọi người nghĩ bây giờ là thiết kế của bạn. Khi mọi thứ xảy ra, mọi người không còn nghĩ rằng đó là vì mã trước đó, bây giờ nó trở thành lỗi CỦA BẠN. Vì vậy, tôi sẽ không sử dụng thiết kế lại từ, refactor hoặc bất cứ điều gì khác ngụ ý đến một kiểu quản lý mà bạn đang thay đổi mọi thứ theo cách của bạn trừ khi tôi thực sự sẽ làm theo cách của tôi. Nếu không, mặc dù bạn có thể đã khắc phục được hàng tá vấn đề, bất kỳ vấn đề nào vẫn còn tồn tại (nhưng không được phát hiện) sẽ được quy cho việc bạn làm lại. Và được đảm bảo rằng nếu mã là xấu thì các bản sửa lỗi của bạn sẽ phát hiện nhiều lỗi hơn mà chỉ đơn giản là bị bỏ qua trước bởi vì mã quá tệ để bắt đầu.
Nếu bạn thực sự biết cách phát triển hệ thống phần mềm thì tôi sẽ thiết kế lại toàn bộ hệ thống. Nếu bạn không thực sự biết cách thiết kế phần mềm GOOD thì tôi sẽ nói với những thay đổi nhỏ gia tăng như bạn có thể kết thúc với một cơ sở mã mà chỉ là xấu như bản gốc.
Một lỗi thường được thực hiện khi thiết kế lại là mọi người bỏ qua cơ sở mã ban đầu. Tuy nhiên, thiết kế lại không có nghĩa là hoàn toàn bỏ qua mã cũ. Mã cũ vẫn phải làm những gì mã mới của bạn phải làm, vì vậy trong nhiều trường hợp, các bước bạn cần đã có trong mã cũ. Sao chép và dán sau đó tinh chỉnh hoạt động kỳ diệu khi thiết kế lại hệ thống. Tôi đã thấy rằng trong nhiều trường hợp, việc thiết kế lại và viết lại một ứng dụng và đánh cắp các đoạn mã từ mã ban đầu nhanh hơn nhiều và đáng tin cậy hơn nhiều so với các thay đổi gia tăng nhỏ.
Fred Brooks nói "xây dựng một cái để vứt bỏ" – 13ren
Chưa kể rằng có rất nhiều chi tiết bạn cần phải thực hiện mà bạn không nghĩ đến khi bạn phác họa ra dự án lớn. –