2009-11-30 34 views
5

Từ kinh nghiệm của tôi, các cam kết về tính tương thích ngược/chuyển tiếp là gilded cage của ngành công nghiệp kỹ nghệ phần mềm. Tôi đã đặc biệt quan sát điều này là trường hợp cho các định dạng tệp tài liệu và ngôn ngữ lập trình/API. Khách hàng và đối tác ghét nó khi dữ liệu hoặc mã của họ bị hỏng; tuy nhiên, nếu bạn không bao giờ phá vỡ tính tương thích, bạn có thể nghiêm túc hạn chế khả năng đổi mới của bạn trong thời gian dài.Các phương pháp hay nhất cho khả năng tương thích cũ

Có giải pháp cho vấn đề này, ngoài việc không dùng tính năng cũ không dùng nữa? Nó có vẻ như ảo hóa, như trong XP Mode của Windows 7, là một khả năng thú vị. Có người khác không?

Ngoài ra, đối với những người trong chúng ta muốn thiết kế hệ thống mới như là bằng chứng trong tương lai càng tốt, chúng ta có thể học được những bài học nào từ những sai lầm trong quá khứ?

Trả lời

5

Đổi mới bằng cách mở rộng, không phải bằng cách viết lại API công khai. Có giao diện chung chung phù hợp với chức năng back-end. Bạn có thể viết lại mô-đun riêng bất cứ lúc nào miễn là bạn cung cấp các mô-đun API công khai với kết quả mà họ mong đợi.

Thực hiện các cải thiện của bạn trong giao diện người dùng và để API nhất quán càng nhiều càng tốt. Tạo các mô-đun mới và ghi lại chúng rõ ràng khi mở rộng các phần công khai của API của bạn, việc sử dụng các cách cũ sẽ tự nhiên nếu bạn cung cấp các cách mới và tốt hơn để thực hiện những việc như là bổ sung cho các cách cũ.

Đối với định dạng tài liệu, luôn bao gồm số phiên bản và đảm bảo bạn có cách hỗ trợ tất cả các phiên bản hiện có. Như với các API, thêm chức năng mới bằng cách mở rộng, không phải bằng cách viết lại.

Khi bạn muốn mang lại những thay đổi cơ bản cho kiến ​​trúc tổng thể của phần mềm, hãy có phiên bản mới bao gồm phiên bản cũ làm mô đun - nó sẽ dẫn đến kích thước lớn hơn nhưng hỗ trợ tốt hơn cho dữ liệu và chương trình cũ hơn.

0

Sử dụng XML làm cơ sở cho định dạng tệp của bạn và chỉ thêm vào đặc tả DTD, không xóa. Bằng cách này, các tệp của bạn phải tương thích ngược với các phiên bản cũ hơn, đó là một dấu cộng.

0

Dưới đây là ví dụ điển hình: Sử dụng SLF4J Bridges để cho phép di chuyển dễ dàng từ mô-đun ghi nhật ký này sang mô-đun ghi nhật ký khác trong Java.

Các vấn đề liên quan