ควรแยกหนึ่งคำในชื่อแพ็คเกจอย่างไร ข้อใดต่อไปนี้ถูกต้อง
com.stackoverflow.my_package
(ใต้)com.stackoverflow.my-package
(ยัติภังค์)com.stackoverflow.MyPackage
(CamelCase)
มาตรฐานทั่วไปคืออะไร
ควรแยกหนึ่งคำในชื่อแพ็คเกจอย่างไร ข้อใดต่อไปนี้ถูกต้อง
com.stackoverflow.my_package
(ใต้)com.stackoverflow.my-package
(ยัติภังค์)com.stackoverflow.MyPackage
(CamelCase)มาตรฐานทั่วไปคืออะไร
คำตอบ:
นี่คือสิ่งที่เอกสารการประชุมตั้งชื่ออย่างเป็นทางการกำหนด:
แพคเกจ
คำนำหน้าของชื่อแพคเกจที่ไม่ซ้ำกันมักจะเขียนในตัวอักษร ASCII-พิมพ์เล็กทั้งหมดและควรจะเป็นหนึ่งในชื่อโดเมนระดับบนสุดในปัจจุบัน
com
,edu
,gov
,mil
,net
,org
หรือหนึ่งในอังกฤษรหัสตัวอักษรสองตัวประเทศระบุตามที่ระบุไว้ใน ISO มาตรฐาน 3166, 1981ส่วนประกอบที่ตามมาของชื่อแพ็กเกจจะแตกต่างกันไปตามข้อกำหนดการตั้งชื่อภายในขององค์กร อนุสัญญาดังกล่าวอาจระบุว่าองค์ประกอบชื่อไดเรกทอรีบางส่วนเป็นชื่อแผนกแผนกโครงการเครื่องหรือชื่อเข้าสู่ระบบ
ตัวอย่าง
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
โปรดทราบว่าโดยเฉพาะอย่างยิ่งสิ่งใดก็ตามที่ต่อท้ายคำนำหน้าโดเมนระดับบนนั้นไม่ได้ระบุไว้ในเอกสารข้างต้น JLS ยังเห็นด้วยกับสิ่งนี้โดยให้ตัวอย่างต่อไปนี้:
com.sun.sunsoft.DOE
gov.whitehouse.socks.mousefinder
com.JavaSoft.jag.Oak
org.npr.pledge.driver
uk.ac.city.rugby.game
ข้อความที่ตัดตอนมาต่อไปนี้เกี่ยวข้องกับ:
ในบางกรณีชื่อโดเมนอินเทอร์เน็ตอาจไม่ใช่ชื่อแพคเกจที่ถูกต้อง นี่เป็นข้อเสนอแนะบางประการสำหรับการจัดการกับสถานการณ์เหล่านี้:
- หากชื่อโดเมนมียัติภังค์หรืออักขระพิเศษอื่น ๆ ที่ไม่ได้รับอนุญาตในตัวระบุให้แปลงเป็นเครื่องหมายขีดล่าง
- หากองค์ประกอบชื่อแพ็กเกจที่ได้นั้นเป็นคำหลักให้ผนวกขีดล่างเข้าด้วยกัน
- หากส่วนประกอบชื่อแพ็กเกจที่เป็นผลลัพธ์ใด ๆ เริ่มต้นด้วยตัวเลขหรืออักขระอื่นใดที่ไม่ได้รับอนุญาตให้ใช้เป็นอักขระเริ่มต้นของตัวระบุให้มีขีดล่างนำหน้าส่วนประกอบ
ทั้งสามไม่ใช่การประชุม
com.stackoverflow.mypackage
ใช้
ชื่อแพคเกจไม่ปฏิบัติตามท่ออูฐหรือขีดหรือขีดแพคเกจประชุมการตั้งชื่อ
นอกจากนี้Google Java Style Guideระบุcom.stackoverflow.mypackage
แบบแผน(เช่น) ที่เหมือนกันทุกประการ:
5.2.1 ชื่อแพ็คเกจ
ชื่อแพคเกจเป็นตัวพิมพ์เล็กทั้งหมดพร้อมคำต่อกันเพียงแค่การต่อกัน (ไม่มีขีดล่าง) ตัวอย่างเช่น
com.example.deepspace
, ไม่ได้ หรือcom.example.deepSpace
com.example.deep_space
- Google แนะนำสไตล์ Java: 5.2 กฎโดยแบ่งตามชนิดระบุ 5.2.1 ชื่อแพ็กเกจ
ทุกคนสามารถใช้เครื่องหมายขีดล่าง_ (ใช้ได้)
ไม่มีใครควรใช้ hypen - (การปฏิบัติที่ไม่ดี)
ไม่มีใครควรใช้อักษรตัวใหญ่ในชื่อแพคเกจ (การปฏิบัติที่ไม่ดี)
หมายเหตุ: ที่นี่ "การปฏิบัติที่ไม่ดี" มีไว้สำหรับทางเทคนิคคุณได้รับอนุญาตให้ใช้ แต่ตามธรรมเนียมแล้วมันไม่ได้มีมารยาทที่ดีในการเขียน
อนุสัญญาการตั้งชื่ออย่างเป็นทางการนั้นไม่เข้มงวดนักพวกเขาไม่แม้แต่ห้ามใช้เครื่องหมายอูฐในกรณียกเว้นยกเว้นคำนำหน้า ( com
ในตัวอย่างของคุณ)
แต่โดยส่วนตัวฉันจะหลีกเลี่ยงตัวอักษรตัวใหญ่และยัติภังค์แม้ตัวเลข ฉันต้องการให้com.stackoverflow.mypackage
Bragboy แนะนำเช่นกัน
(การใส่ไฮเฟ็น '-' ไม่ถูกต้องในชื่อแพ็คเกจ)
แก้ไข
สิ่งที่น่าสนใจ - ข้อกำหนดทางภาษามีบางอย่างที่จะพูดเกี่ยวกับการตั้งชื่ออนุสัญญาด้วย
ในบทที่ 7.7 ชื่อแพ็กเกจที่ไม่ซ้ำกันเราจะเห็นตัวอย่างที่มีชื่อแพคเกจที่ประกอบด้วยตัวอักษรตัวพิมพ์ใหญ่ (ดังนั้นสัญกรณ์ CamelCase จะเป็น OK) และพวกเขาแนะนำให้แทนที่การใช้ไฮเฟ็นด้วยเครื่องหมายขีดล่าง ("mary-lou" -> "mary_lou") คำหลักที่มีเครื่องหมายขีดล่าง ("com.example.enum" -> "com.example._enum")
ตัวอย่างเพิ่มเติมสำหรับตัวอักษรตัวพิมพ์ใหญ่ในชื่อแพคเกจที่สามารถพบได้ในบทที่6.8.1 แพคเกจชื่อ
ขีดล่างดูน่าเกลียดในชื่อแพคเกจ สำหรับสิ่งที่มีค่าในกรณีของชื่อสารประกอบของสามหรือมากกว่าคำพูดที่ผมใช้ชื่อย่อ (ตัวอย่างเช่นcom.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
) package-info.java
แล้วเอกสารวัตถุประสงค์แพคเกจใน
การต่อคำในชื่อแพ็คเกจเป็นสิ่งที่นักพัฒนาส่วนใหญ่ไม่ทำ
คุณสามารถใช้สิ่งที่ชอบ
com.stackoverflow.mypackage
อ้างอิงการประกาศชื่อ JLS
com.stackoverflow.my.package