ทำไมเนมสเปซมากมายเริ่มต้นด้วย com


45

ฉันสังเกตเห็นว่า บริษัท จำนวนมากใช้เนมสเปซ "ชื่อโดเมนย้อนกลับ" และฉันอยากรู้ว่าการฝึกฝนนั้นมาจากที่ใดและทำไมมันถึงดำเนินต่อไป มันเป็นเพียงการดำเนินการต่อเนื่องจากการฝึกท่องจำหรือมีแนวคิดสถาปัตยกรรมที่โดดเด่นที่ฉันอาจหายไปที่นี่หรือไม่?

นอกจากนี้ยังทราบคำถามเช่น: https://stackoverflow.com/questions/189209/do-you-really-use-your-reverse-domain-for-package-naming-in-javaที่เรียงลำดับคำถามของฉัน แต่ไม่ใช่ 100 %

(ถ้ามันทำให้คุณรู้สึกดีขึ้นฉันอยากรู้จริงๆว่าฉันควรจะใช้มันสำหรับความพยายามในการกำหนดชื่อ javascript ของฉัน แต่ฉันอยากรู้มากขึ้นเกี่ยวกับตอนนั้นและทำไมและนั่นคือสิ่งที่จะช่วยแนะนำฉันเกี่ยวกับคำตอบจาวาสคริปต์ คุณ: "หน้าต่าง")

ตัวอย่างของการฝึกนี้ขยายไปถึงโฟลเดอร์และไฟล์: http://imgur.com/jtdXo


1
นี่มันแปลกฉันไม่เคยเห็นมาก่อน .. ตอนนี้ฉันอยากรู้อยากเห็น
จิมมี่ฮอฟฟา

คำตอบ:


54

Reverse Domain Notationมีต้นกำเนิดใน Java แต่มีการใช้กันอย่างแพร่หลายในหลาย ๆ แพลตฟอร์มเช่นแพคเกจ Android, แพ็คเกจ Mac OS X, JavaScript, ActionScript และอื่น ๆ

การปฏิบัตินี้มีประโยชน์อย่างยิ่งเพราะเป็นระบบกระจายอำนาจสำหรับซอฟต์แวร์กำหนดชื่อ ไม่จำเป็นต้องใช้กับหน่วยงานส่วนกลางสำหรับเนมสเปซ เพียงใช้ชื่อโดเมนที่คุณเป็นเจ้าของ (กลับรายการ) และจัดการภายในองค์กรของคุณเอง ด้วยการตั้งชื่อแพ็คเกจเช่นนี้สามารถมั่นใจได้ว่ารหัสจะไม่ขัดแย้งกับแพ็คเกจอื่น ๆ

จากบทแนะนำ Java ของ Oracle :

บริษัท ต่างๆใช้ชื่อโดเมนอินเทอร์เน็ตที่กลับด้านเพื่อเริ่มต้นชื่อแพ็คเกจเช่น com.example.mypackage สำหรับแพ็คเกจชื่อ mypackage ที่สร้างโดยโปรแกรมเมอร์ที่ example.com

การชนกันของชื่อที่เกิดขึ้นภายใน บริษัท เดียวจะต้องได้รับการจัดการโดยการประชุมภายใน บริษัท นั้นอาจรวมถึงภูมิภาคหรือชื่อโครงการหลังจากชื่อ บริษัท (ตัวอย่างเช่น com.example.region.mypackage)

มันเป็นมากกว่าแบบฝึกหัดการฝึกฝนที่ดีเพราะเป็นเนมสเปซที่สมบูรณ์และเฉพาะเจาะจง หากมีสอง บริษัท ชื่อAcmeและทั้งสองเลือกเนมสเปซacme.รหัสของพวกเขาจะขัดแย้งกัน แต่มีเพียงหนึ่งใน บริษัท เหล่านั้นเท่านั้นที่สามารถเป็นเจ้าของacme.comโดเมนเพื่อให้พวกเขาได้ใช้com.acme.เนมสเปซ

การย้อนกลับชื่อโดเมนจะอนุญาตให้ใช้สถาปัตยกรรมด้านบนลงล่าง comจะมีรหัสสำหรับ บริษัท (หรือใครก็ตามที่เป็นเจ้าของชื่อโดเมน. com) และภายใต้ชื่อ บริษัท (โดเมน) จากนั้นลึกลงไปในนั้นจะเป็นโครงสร้างขององค์กรและ / หรือเนมสเปซจริง (ตัวอย่างเช่นถ้ามันเป็นรหัสจากเครือข่ายที่เรียกว่าinternal.acme.comซึ่งให้แผนกนี้เป็นชื่อย่อยของตัวเองcom.acme) โครงสร้างจากบนลงล่างนี้ใช้ในแอปพลิเคชั่นจำนวนมากรวมถึงในการบริหารระบบ (คล้ายกับการค้นหาที่อยู่ IP ย้อนกลับ)

ส่วนตัวผมใช้มันสำหรับรหัส JavaScript ใหม่ทั้งหมดที่ฉันเขียนให้กับ บริษัท ของฉัน เป็นการรับรองว่ารหัสจะไม่ขัดแย้งกับรหัสอื่นแม้ว่าฉันจะเขียนรหัสเดียวกันสำหรับ บริษัท อื่นในภายหลัง มันสามารถทำให้การเข้าถึงโค้ดยุ่งยาก (การพิมพ์com.digitalfruition.ทำได้ค่อนข้างมาก) แต่สามารถแก้ไขได้อย่างง่ายดายด้วยการปิดและตัวแปรโลคอล ( var DF = com.digitalfruition)


ฉันควรจะเปลี่ยนชื่อแพคเกจแบบสุ่มของแอพ Android ของฉัน ... หรือซื้อโดเมนนั้น :(
jadkik94

ฉันสงสัยว่าถ้าใครพบวิธีแก้ปัญหาการมีชื่อ บริษัท ที่ขึ้นต้นด้วยหมายเลขเช่น 123ABC.com คุณควรใช้แบบแผนการตั้งชื่อแบบใดในกรณีนี้โดยที่ Java ไม่อนุญาตให้คุณมีชื่อคลาสที่เริ่มต้นด้วย หมายเลข?!
sorin

1
@sorin - นำหน้าส่วนที่เกี่ยวข้องของชื่อแพ็คเกจด้วยขีดล่าง เช่นcom._123ABC. ตัวอย่างที่docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
cxw

13

เป็นเพราะการใช้เนมสเปซลดโอกาสของความขัดแย้งของชื่ออย่างมากและเนื่องจากการใช้ชื่อโดเมนของคุณ (ซึ่งได้รับการควบคุมแล้ว) เป็นวิธีที่ดีในการสร้างเนมสเปซส่วนกลาง

ด้วยการย้อนกลับส่วนของโดเมนในเนมสเปซคุณทำให้สามารถจัดเรียงได้ ชื่อทั้งหมดที่เป็นของเนมสเปซอันน้อยของคุณจะถูกจัดเรียงเข้าด้วยกัน

และสุดท้าย แต่ไม่ท้ายสุด TLD .comเป็นTLD ที่ได้รับความนิยมสูงสุดบนอินเทอร์เน็ตดังนั้นจึงใช้งานโดยนักพัฒนาซอฟต์แวร์มากกว่า TLD อื่น ๆ

ไม่ว่าในกรณีใดการฝึกหัดเริ่มต้นด้วย Java ซึ่งแต่ละคลาสจะต้องมีไฟล์เป็นของตัวเองและเพื่อเล่นในระบบนิเวศที่มีขนาดใหญ่ขึ้นระบบเนมสเปซทั่วโลกได้ถูกนำเสนอเพื่อช่วยให้ชั้นเรียนมีคุณสมบัติได้ง่าย


มีการบังคับใช้อย่างเคร่งครัดหรือไม่ สมมติว่าฉันพยายามสร้างแพ็คเกจ com.xyz แต่ไม่ได้เป็นเจ้าของโดเมน Android จะป้องกันไม่ให้ฉันทำหรือไม่
VarunAgw

@VarunAgw ไม่คุณสามารถเล่นสกปรกและบังคับให้เกิดความขัดแย้ง
Martijn Pieters

นอกเหนือจากความขัดแย้งมันสมเหตุสมผลมากกว่าที่จะใช้ OrgName.ProjectName สำหรับโครงการขนาดเล็กแล้ว
VarunAgw

คุณกำลังบินอยู่ท่ามกลางการประชุม แต่มันเป็นสายของคุณ
Martijn Pieters

2

endianness

ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับจาวา แต่ตามรูปแบบทั่วไปนี่เป็นเพียงการเรียงสับเปลี่ยนของ big-endian vs little-endian ที่พูดเชิงเปรียบเทียบ

"Endianness" บางครั้งใช้เพื่ออธิบายลำดับของส่วนประกอบของชื่อโดเมนเช่น 'en.wikipedia.org' (รูปแบบ 'little-endian' ปกติที่ทันสมัย) เทียบกับ reverse-DNS 'org.wikipedia.en' ( 'big-endian' ใช้สำหรับการตั้งชื่อคอมโพเนนต์แพ็คเกจหรือประเภทในระบบคอมพิวเตอร์เช่นแพ็คเกจ Java ไฟล์ ".plist" ของ Macintosh เป็นต้น URL ถือได้ว่าเป็น 'บิ๊ก - เอนเดียน' แม้ว่าส่วนโฮสต์อาจเป็นชื่อ DNS ของ 'ลิตเติ้ลเอนเดียน'

ในกรณีนี้มันคงเป็นไปเพื่อวัตถุประสงค์ขององค์กรที่จะอนุญาตให้มีการจัดกลุ่มตามธรรมชาติ / การแตกแขนงต้นไม้ มันช่วยให้สิ่งต่าง ๆ เป็นระเบียบเรียบร้อยในระดับที่สูงขึ้นและคุณขุดลงเพื่อดูรายละเอียดที่เฉพาะเจาะจงมากขึ้น

ทางเลือกจะค่อนข้างแบนและการจัดกลุ่มที่มีความหมาย / อาจเป็นประโยชน์จะต้องถูกตีความเทียบกับการอยู่ภายในโครงสร้าง


7
Golly ไม่เคยได้ยิน endianness เคยอ้างถึงโครงการเนมสเปซโดเมนย้อนกลับ ..
Martijn Pieters

ฉันไม่ได้ทำเช่นนั้นจนกว่าเพื่อนร่วมงานจะขว้างมันออกมาในบทสนทนาและพูดคุยเกี่ยวกับการสัมผัสเป็นวง ๆ เขาอ้างว่าวิกิพีเดีย (เชื่อมโยงกับ) ดังนั้นจึงเห็นได้ชัดว่ามันไม่เคยได้ยินมาก่อน ฉันต้องผ่อนคลายจิตใจที่แท้จริงของฉันเล็กน้อยเพื่อรองรับมุมมองนี้ แต่ฉันสามารถอยู่กับมันได้
Ed Hastings

3
ใช่การสนทนาเรื่อง DNS endianness นี้เกิดขึ้นเป็นระยะ ๆ เครือข่าย "Janus" ที่หายไปนานในสหราชอาณาจักรมีชื่อเป็นทางรอบและพวกเขามักจะพูดว่าฝูงชน ARPANet ได้รับสิ่งต่าง ๆ ย้อนหลัง
Ross Patterson

3
@RossPatterson: ระบบไฟล์, ระบบปฏิบัติการ, ระบบการจำแนกแบบเหลี่ยมเพชรพลอย, ระบบการจัดเก็บในห้องสมุด, หมายเลขโทรศัพท์, ส่วนใหญ่เริ่มต้นด้วยรูททางด้านซ้ายแล้วเจาะจงมากขึ้น Heck แม้แต่ไฟล์กำหนดค่าเซิร์ฟเวอร์ชื่อ DNS ส่วนใหญ่ก็ทำได้เช่นกัน ดังนั้นฉันเห็นด้วยกับฝูงชน Janus
Jörg W Mittag

1
@RossPatterson ด้วยชื่อของพวกเขาฉันประหลาดใจที่ Janus มีความเห็นเกี่ยวกับสิ่งที่นับว่าเป็น "วิธีที่ถูกต้อง"
TRiG

0

ฉันคิดว่ารายละเอียดเล็ก ๆ น้อย ๆ ไม่ได้กล่าวถึงในคำตอบอื่น ๆ : เหตุผลที่ .com .com เป็นที่นิยมที่สุดนั่นก็คือในยุคแรก ๆ ของเว็บเว็บเบราว์เซอร์เช่น Netscape Navigator "ต่อท้ายอัตโนมัติ" .com หาก มันหายไปในที่อยู่ (เช่นหากการค้นหาชื่อล้มเหลว) ดังนั้นหากคุณพิมพ์ "แชร์แวร์" มันจะถูกขยายเป็น " http://shareware.com " (หรือ " http://www.shareware.com "; ฉันจำรายละเอียด www ไม่ได้) .com โดเมนอาจยังคงเป็นที่นิยมมากที่สุด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.