Làm thế nào một từ riêng biệt trong tên gói? Điều nào sau đây là đúng?
com.stackoverflow.my_package
(gạch dưới)com.stackoverflow.my-package
(dấu gạch ngang)com.stackoverflow.MyPackage
(Lạc đà)
Tiêu chuẩn chung là gì?
Làm thế nào một từ riêng biệt trong tên gói? Điều nào sau đây là đúng?
com.stackoverflow.my_package
(gạch dưới)com.stackoverflow.my-package
(dấu gạch ngang)com.stackoverflow.MyPackage
(Lạc đà)Tiêu chuẩn chung là gì?
Câu trả lời:
Đây là những gì tài liệu quy ước đặt tên chính thức quy định:
Gói
Các tiền tố của tên gói độc đáo luôn được viết bằng tất cả chữ thường chữ ASCII và nên là một trong các tên miền cấp cao nhất, hiện nay
com
,edu
,gov
,mil
,net
,org
, hoặc một trong các tiếng Anh mã hai chữ nước xác định theo quy định tại tiêu chuẩn ISO Tiêu chuẩn 3166, 1981.Các thành phần tiếp theo của tên gói thay đổi theo quy ước đặt tên nội bộ của một tổ chức. Các quy ước như vậy có thể chỉ định rằng các thành phần tên thư mục nhất định là bộ phận, bộ phận, dự án, máy hoặc tên đăng nhập.
Ví dụ
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
Lưu ý rằng, đặc biệt, mọi thứ tuân theo tiền tố tên miền cấp cao nhất không được chỉ định bởi tài liệu trên. JLS cũng đồng ý với điều này bằng cách đưa ra các ví dụ sau:
com.sun.sunsoft.DOE
gov.whitehouse.socks.mousefinder
com.JavaSoft.jag.Oak
org.npr.pledge.driver
uk.ac.city.rugby.game
Đoạn trích sau đây cũng có liên quan:
Trong một số trường hợp, tên miền internet có thể không phải là tên gói hợp lệ. Dưới đây là một số quy ước được đề xuất để xử lý các tình huống này:
- Nếu tên miền chứa dấu gạch nối hoặc bất kỳ ký tự đặc biệt nào khác không được phép trong mã định danh, hãy chuyển đổi nó thành dấu gạch dưới.
- Nếu bất kỳ thành phần tên gói kết quả nào là từ khóa thì hãy thêm dấu gạch dưới vào chúng.
- Nếu bất kỳ thành phần tên gói kết quả nào bắt đầu bằng một chữ số hoặc bất kỳ ký tự nào khác không được phép làm ký tự ban đầu của mã định danh, thì có một dấu gạch dưới được đặt trước thành phần.
Cả ba không phải là quy ước.
Sử dụng com.stackoverflow.mypackage
.
Tên gói không theo quy ước đặt vỏ lạc đà hoặc gạch dưới hoặc quy ước đặt tên gói .
Ngoài ra, Google Java Style Guide chỉ định chính xác com.stackoverflow.mypackage
quy ước (nghĩa là ):
5.2.1 Tên gói
Tên gói đều là chữ thường, với các từ liên tiếp được ghép đơn giản với nhau (không có dấu gạch dưới). Ví dụ
com.example.deepspace
, khôngcom.example.deepSpace
hoặccom.example.deep_space
.- Hướng dẫn về Phong cách Java của Google: 5.2 Quy tắc theo loại định danh: 5.2.1 Tên gói .
Bất cứ ai cũng có thể sử dụng dấu gạch dưới _ (Được rồi)
Không ai nên sử dụng hypen - (thực tế xấu của nó)
Không ai nên sử dụng chữ in hoa bên trong tên gói (Thực tiễn xấu)
LƯU Ý: Ở đây "Thực hành xấu" có nghĩa là về mặt kỹ thuật, bạn được phép sử dụng điều đó, nhưng thông thường nó không phải là cách cư xử tốt để viết.
Các quy ước đặt tên chính thức không nghiêm ngặt, chúng thậm chí không 'cấm' ký hiệu trường hợp lạc đà ngoại trừ tiền tố ( com
trong ví dụ của bạn).
Nhưng cá nhân tôi sẽ tránh các chữ cái viết hoa và gạch nối , thậm chí cả số. Tôi cũng muốn chọn com.stackoverflow.mypackage
như Bragboy.
(dấu gạch nối '-' không hợp pháp trong tên gói)
BIÊN TẬP
Thú vị - đặc tả ngôn ngữ có một cái gì đó để nói về quy ước đặt tên quá.
Trong Chương 7.7 Tên gói duy nhất, chúng ta thấy các ví dụ với tên gói bao gồm chữ in hoa (vì vậy ký hiệu CamelCase sẽ ổn) và họ đề nghị thay thế cách viết bằng dấu gạch dưới ("mary-lou" -> "mary_lou") và tiền tố java từ khóa có dấu gạch dưới ("com.example.enum" -> "com.example._enum")
Một số ví dụ khác cho chữ in hoa trong tên gói có thể được tìm thấy trong chương 6.8.1 Tên gói .
Underscores trông xấu xí trong tên gói. Đối với những gì có giá trị, trong trường hợp tên ghép từ ba từ trở lên, tôi sử dụng tên viết tắt (ví dụ com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
:) và sau đó ghi lại mục đích gói package-info.java
.
Ghép các từ trong tên gói là điều mà hầu hết các nhà phát triển không làm.
Bạn có thể sử dụng một cái gì đó như.
com.stackoverflow.mypackage
Tham khảo khai báo tên JLS
com.stackoverflow.my.package