phát hành một phiên bản API mới là một rất hiếm điều. Thông thường, bạn có thể đạt được khả năng tương thích ngược chỉ bằng cách thêm các tham số tùy chọn mới hoặc các phương thức mới. Ví dụ, nếu bạn đã phương thức có tên search
, nhưng bây giờ bạn không hài lòng với cách nó hoạt động, bạn có thể đối phó với nó trong nhiều cách khác nhau:
Nếu thay đổi là đơn giản, bạn có thể thêm một tham số mới mode
mà mặc định là mode1
(vì vậy nó tương thích ngược). Nếu người dùng cung cấp mode2
bạn phát hiện nó với điều kiện thích hợp if
như bạn đã tự đề xuất. (Ngoài ra, thông thường bạn có thể nghĩ ra tên tốt hơn "chế độ".)
Nếu thay đổi lớn, bạn có thể thêm dịch vụ search2
mới sử dụng giao diện mới. Sau đó, bạn đánh dấu phương thức search
là không được chấp nhận (nhưng vẫn hoạt động và tương thích ngược). Thông thường, khi bạn làm điều này, bạn có thể refactor mã của mình theo cách như vậy, hầu như tất cả logic nằm trong phương thức search2
và phương thức cũ của bạn search
gọi search2
nội bộ với thông số được sửa đổi (và định dạng lại kết quả phù hợp) . Nếu bạn làm điều này đúng cách, bạn sẽ không bao giờ cần phải thay đổi phương thức search
nữa. Khi bạn thay đổi bảng của mình, v.v. - bạn sẽ chỉ cần sửa đổi search2
.
Điểm của tôi là tránh phát hành N+1
phiên bản đầu tiên của API.Bản phát hành lớn như vậy ngụ ý những thay đổi lớn trong số ALL các phương pháp của bạn, không chỉ một phương pháp. Nhiều API chính không bao giờ phát hành phiên bản 2 của API của họ, họ vẫn sử dụng phiên bản 1, chỉ cần sửa đổi một chút phần của nó, như trong ví dụ trên.
Nếu bạn là hoàn toàn chắc chắn về việc phát hành phiên bản N+1
-st của bạn API, tạo điểm mục mới cho ALL các phương pháp của bạn. Nếu bạn có một thư mục có tên services
, hãy tạo một thư mục mới có tên services-v2
. Tái cấu trúc mã services
của bạn để mã sử dụng tối đa services-v2
. Nếu bạn nghĩ rằng nó quá mức cần thiết, thì tôi nghĩ bạn không cần N+1
phiên bản đầu tiên của API của bạn.
BTW, đừng nhầm lẫn các API tập trung (như Google Maps) với các API được phân phối (như Android). Android phát hành phiên bản API mới mọi lúc, bởi vì có hàng tỷ máy chủ Android (mỗi thiết bị Android là một) và tất cả chúng không thể đơn giản được nâng cấp từ xa bởi Google. Phiên bản tiếp theo của Android vẫn tương thích ngược với phiên bản trước, số này chỉ tăng lên để cho biết các tính năng mới. Ví dụ: Bạn vẫn có thể chạy các ứng dụng được tạo cho Android 3.0 trên Android 7.0 (người dùng có thể nhận thêm một số cảnh báo, nhưng ứng dụng sẽ chạy). Các nhà phát triển ứng dụng Android sử dụng những con số này để mô tả "yêu cầu tối thiểu" cho ứng dụng của họ. Trong khi đó, các API tập trung thường tăng số phiên bản của chúng để biểu thị sự thay đổi không tương thích ngược lớn.
Cảm ơn. Tôi đã đi với gợi ý điểm đầu tiên. Những thay đổi này khá nhỏ nên tôi đã thực hiện kiểm tra tình trạng phiên bản API và mở rộng các phương thức với các tham số tùy chọn khác nhau hoặc tạo các phương thức mới cho mỗi phiên bản API trong một số trường hợp. Bản phát hành API nằm ngoài tầm kiểm soát của tôi vì đó là API ứng dụng khách. – Mark
Đây là một câu trả lời rất hay, tôi đã hy vọng tôi nhận được một số liên kết và con trỏ là tốt mặc dù. – Alex