簡體   English   中英

java包名稱約定失敗

[英]java package name convention failure

我剛剛提出了Java SE的學習曲線,對包名的常用Java約定沒有任何問題,例如com.example.library_name_here.package_name_here

除了。

我一直注意到在一些相當知名的軟件包中沒有遵守這個規則。

  • JLinejline.*
  • JACOBcom.jacob.* (沒有jacob.com)
  • JNAcom.sun.jna.* (網站上的免責聲明說明:即使包名稱(com.sun.jna)可能暗示其他方式,Sun也不贊助此項目。)

所以我想知道,是否存在通常的反向域名約定失效的情況,並且有很好的方法可以繞過它? 我能想到的唯一案例是圍繞域名所有權問題(例如,您更改了項目托管/域名,或者已經有一個眾所周知的軟件包對您的域名具有“擅自占用權”,或者您對域的所有權運行out和別人把它搞砸了。

編輯:如果我使用我公司的域名,我們被收購或分拆,我們應該如何處理包名? 保持相同或重命名? (我認為從引用包的編譯類失敗的角度看重命名是不好的)

這是一個命名慣例。 沒有真正的要求,甚至沒有期望包名映射到域名。

一般的想法是兩個組織不會擁有相同的域,因此使用域名作為包的一部分可確保沒有命名空間沖突。 但這只是一個建議。

有人在sun命名空間中擁有包是有充分理由的。 如果他們提供公共API的實現,則通常需要在API的命名空間中實現這些類。

如果您正在逐步掌握Java學習曲線,我會更加關注如何使您的包裝結構清晰,以便您可以輕松找到您正在尋找的課程。

包用於避免由各種實體構建的組件之間的模糊和沖突。 只要您遵循約定,並且沒有人非法使用您的包命名空間餅圖,您就不必擔心其他人使用的內容。

唯一重要的是(恕我直言),包名稱的各個部分按重要性“排序”,即你最終沒有使用gui.myprog,util.myprog,main.myprog但是使用myprog.gui,myprog .util和myprog.main。 包名稱是否真的以頂級域名開頭,后跟域名,這對我來說無關緊要。

您不能將語言關鍵字用作包名稱的一部分,這是另一種無法應用域名約定的情況 - LONG Building Technologies的運氣不佳

但是,慣例只是一個慣例,而且它存在的唯一原因是它最大限度地減少了不同項目意外選擇相同包名的可能性。 如果你不能遵循它,那不是一個大問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM