Các quy ước đặt tên cụ thể của phiên bản lớp Java


10

Tôi phải tạo một Bộ chuyển đổi giữa hai phần mềm (mô phỏng, không phải cs). Giả sử chúng ta có một lớp có tên ThatThing. Tôi phải xử lý các triển khai cụ thể của nhà cung cấp. Các phiên bản này không có tên có ý nghĩa (không giống như nhật thực nhật thực, chàm, v.v.).

1. Làm thế nào tôi nên đặt tên một lớp nên thể hiện số phiên bản?

Tôi thấy lớp thích ThatThing_3_6_Impl, ThatThing_3_7_Implkhá khó xử.

Câu trả lời:


20

Sử dụng một tên gói khác nhau.

com.example.version36.ThatThing
com.example.version37.ThatThing

Điều này cho phép bạn giữ tất cả "mọi thứ" cho các phiên bản cụ thể cùng nhau.

Apache Commons Lang đã sử dụng định dạng này khi phát hành bản viết lại "phiên bản 3" của họ.


Vì bạn cần có thể tham chiếu cả hai phiên bản trong một lớp, tôi sẽ rút ngắn tên thành:

ThatThing36
ThatThing37

Trong trường hợp của bạn, điều này dường như đủ để mô tả, và nó loại bỏ những điều xấu xí Impl_.


Nghe được đấy. Tôi sẽ nghĩ về nó. Mặc dù ở những nơi mà các phiên bản này kết hợp với nhau, chúng ta cần sử dụng tên đủ điều kiện cho các tài liệu tham khảo, phải không?
dùng802421

Làm thế nào để họ đến với nhau? Bạn đang sử dụng tiêm phụ thuộc? Dù bằng cách nào, để trả lời bạn câu hỏi, có.
Jeremy Heiler

Họ có nhiều phiên bản mô hình dữ liệu thay đổi giữa các phiên bản. Một số tập hợp con cụ thể của các tính năng được trộn lẫn với nhau. Không hỗ trợ thư viện nào cả (ví dụ: không di, không codegen). Đây là lịch sử của 11 năm tiến hóa phần mềm :(.
user802421

Buồn. Có thể là bằng cách version37.ThatThingkéo dài version36.ThatThingsẽ làm giảm một số nỗi đau?
Jeremy Heiler

Thật không may, chúng có cấu trúc khác nhau và cần chuyển đổi phức tạp. Nó giống như bitmap và đồ họa vector.
dùng802421

2

Nó không quan trọng lắm. Chọn một quy ước thể hiện mọi thứ bạn cần để thể hiện và gắn bó với nó.

Bạn có thể sử dụng ThatThing3_6cho "Điều đó 3.6".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.