Lý do quan trọng nhất để thực hiện các cam kết thường xuyên, nhỏ và có ý nghĩa là để hỗ trợ sự hiểu biết về lịch sử của mã. Cụ thể, rất khó để hiểu mã đã thay đổi như thế nào nếu khó tạo ra các khác biệt dễ hiểu.
Tùy chọn 1 làm xáo trộn lịch sử các thay đổi bạn đã thực hiện, nhưng nếu không, nó sẽ không gây ra bất kỳ vấn đề nào.
Tùy chọn 2 làm xáo trộn lịch sử các thay đổi bạn đã thực hiện, có thể ít hơn so với tùy chọn 1, nhưng nó có thể gây ra các vấn đề khác cho chính bạn hoặc người khác nếu họ giả định hoặc kết luận rằng các cam kết là khác biệt, ví dụ có thể được sáp nhập vào các chi nhánh khác một cách độc lập. Trừ khi có một lý do thực tế mạnh mẽ tại sao điều này được ưa thích hơn tùy chọn 1, điều này ít lý tưởng hơn nó.
Tùy chọn 3 là tốt nhất, tất cả những thứ khác đều bằng nhau, nhưng nếu, như bạn đã mô tả ở nơi khác, làm như vậy sẽ đòi hỏi lượng thời gian "cực kỳ" hoặc sẽ phải chịu các chi phí đáng kể khác, bạn sẽ phải cân nhắc các chi phí đó với lợi ích dự kiến của tạo ra các cam kết sạch hơn.
Dựa trên thông tin bạn đã cung cấp, tôi sẽ chọn tùy chọn 1. Có lẽ bạn nên thiết lập lời nhắc nhắc bạn thực hiện các thay đổi của mình?
Tạo mẫu và viết lại
Một lưu ý khác cần lưu ý, đặc biệt là lưu ý đến việc bạn là lập trình viên duy nhất và tôi nghi ngờ rằng bạn đang làm việc trên một cơ sở mã tương đối mới, đó là có lẽ tốt để phát triển các thói quen khác nhau khi thực hiện các thay đổi khi bạn thay đổi đang tạo mẫu mã mới so với việc duy trì hoặc mở rộng mã hiện có. Có lẽ không có sự phân chia sắc nét khủng khiếp giữa hai người, nhưng tôi nghĩ đó vẫn là một sự khác biệt hữu ích.
Khi bạn đang tạo mẫu mã mới, hãy cam kết bất cứ khi nào bạn muốn lưu các thay đổi của mình, gần như chắc chắn trong một chi nhánh, nhưng có lẽ trong một dự án riêng biệt. Hoặc thậm chí có thể chỉ hoạt động bên ngoài kiểm soát phiên bản hoàn toàn. Thay vào đó, bạn có thể tập trung vào việc thu thập bằng chứng về tính khả thi của các giả thuyết hoặc thiết kế khác nhau mà bạn đang xem xét. Tôi thường viết các nguyên mẫu nhỏ bằng các công cụ khác nhau, ví dụ LINQPad thay vì Visual Studio cho mã C #.
Khi bạn xác nhận một giả thuyết hoặc thiết kế cụ thể, hãy viết lại nó trong dự án chính của bạn, lý tưởng nhất là trong một chi nhánh và đưa ra những cam kết nhỏ, có ý nghĩa sẽ hỗ trợ tốt nhất cho sự hiểu biết của người khác (bao gồm cả bạn trong tương lai) về bản chất của những thay đổi bạn đang làm