Các vấn đề định dạng mã. Ngay cả vấn đề thụt đầu dòng . Và tính nhất quán là quan trọng hơn những cải tiến nhỏ. Nhưng các dự án thường không có hướng dẫn phong cách rõ ràng, đầy đủ, có thể kiểm chứng và được thi hành từ ngày 1 và những cải tiến lớn có thể đến bất kỳ ngày nào. Có thể bạn thấy rằng
SELECT id, name, address
FROM persons JOIN addresses ON persons.id = addresses.person_id;
có thể được viết tốt hơn vì / được viết tốt hơn
SELECT persons.id,
persons.name,
addresses.address
FROM persons
JOIN addresses ON persons.id = addresses.person_id;
trong khi làm việc để thêm nhiều cột vào truy vấn. Có thể đây là phức tạp nhất trong tất cả bốn truy vấn trong mã của bạn hoặc một truy vấn tầm thường trong số hàng ngàn. Cho dù quá trình chuyển đổi có khó khăn đến đâu, bạn vẫn quyết định nó xứng đáng. Nhưng làm thế nào để bạn theo dõi các thay đổi mã trên các thay đổi định dạng chính? Bạn chỉ có thể từ bỏ và nói "đây là điểm chúng tôi bắt đầu lại" hoặc bạn có thể định dạng lại tất cả các truy vấn trong toàn bộ lịch sử kho lưu trữ.
Nếu bạn đang sử dụng một hệ thống kiểm soát phiên bản phân tán như Git, bạn có thể trở lại cam kết đầu tiên và định dạng lại theo cách của bạn từ trạng thái hiện tại. Nhưng đó là rất nhiều công việc, và mọi người khác sẽ phải tạm dừng công việc (hoặc được chuẩn bị cho mẹ của tất cả các sự hợp nhất) trong khi nó đang diễn ra. Có cách nào tốt hơn để thay đổi lịch sử mang lại kết quả tốt nhất không:
- Cùng một phong cách trong tất cả các cam kết
- Công việc hợp nhất tối thiểu
?
Để làm rõ, đây không phải là về các thực tiễn tốt nhất khi bắt đầu dự án, mà là nên làm gì khi một phép tái cấu trúc lớn đã được coi là Điều tốt ™ nhưng bạn vẫn muốn có một lịch sử có thể theo dõi? Không bao giờ viết lại lịch sử là điều tuyệt vời nếu đó là cách duy nhất để đảm bảo rằng các phiên bản của bạn luôn hoạt động giống nhau, nhưng lợi ích của nhà phát triển khi viết lại sạch sẽ là gì? Đặc biệt là nếu bạn có các cách (kiểm tra, định nghĩa cú pháp hoặc nhị phân giống hệt sau khi biên dịch) để đảm bảo rằng phiên bản viết lại hoạt động chính xác như bản gốc?