2011-03-04 93 views
1

它只是我,還是Java包命名約定中的TLD非常無關?我的意思是,如果您 - 如果您在com.example.packageorg.example.package之間發生名稱空間衝突,而沒有TLD,那麼無論如何您對TLD都有困惑。爲什麼要權衡名稱空間衝突的混淆?當然,編譯器吐出一個錯誤/警告比它愉快地嘗試編譯某個導入了錯誤軟件包的程序好得多?Java包命名方案:頂級域名真的很重要嗎?

只是我在會議上的兩分錢。坦率地說,你不會在org之間有命名空間衝突。和com。無論如何,因爲兩個同名域名的java包將由兩個具有相同域但不同tld的公司編寫。

回答

0

我問一個關於包名的問題,喬恩斯基特(​​誰那傢伙)有一個很好的評論說

來自:Hyphenated company name in Java packages

說實話,我希望Java的hadn」根據 約定,這條道路走下坡路。我想知道有多少個 目錄名爲「com」或「org」 與單個成員存在 - 一個 子目錄具有更有意義的 名稱。

+0

提出了一個有效的觀點 - 這個約定影響目錄以及導入聲明(我在原始文章中忽略了這一點)。當面對一個裝滿軟件包的目錄時,我必須先選擇com/org /,如果我不明確知道軟件包使用哪個TLD,我該如何找到它?當然,這並不會影響開發者,因爲它大部分是由工具來處理的,但我相信這種情況最終會出現...... – 2011-03-04 22:33:54

0

編碼軟件時,我只是忽略它,但TLD確實有助於使包具有獨特性。

0

就像你說的那樣,這只是一個約定。它不是完美的;域名可能會轉手,這也會導致衝突。

1

這並不是com.org.對包名是重要的,只是「使用公司的域名」是一個不錯的,簡單的經驗法則。

+0

當然,它表面上很好很簡單,但我仍然認爲'com.example.package' vs'org.example.package'在發生這種衝突時很可能會產生混淆。事實上,這不可能使TLD變得無關緊要,但衝突造成的混亂更是導致移除的原因。 – 2011-03-04 22:30:06

0

如果你的軟件包不是庫(或者它們只是你自己公司的庫),那麼它們永遠不會退出,因此你不必遵循任何軟件包協議。實際上,在獨立應用程序中,我只使用一個簡短的軟件包名稱,並將所有內容都放在其中。如果它們使用相同的包裝聲明,則可以簡化差異檢驗常用文件的分析或校驗。這裏是我發佈的一個問題:Generic Java Package Name

1

有時它可能很重要,但主要是它比威望實際工程原因更多。它可以與繪畫角落畫家的簽名相比較,比如說「我做了這個」,這可以讓你在你表達你的關注點和/或意見時變得顯着。

作爲這方面的一個例子,當Apache Software Foundation resignedJCP,每個人都知道這對他們的工作,因爲他們使用的所有外部的第三方庫的直接影響包含域:有很多org.apache.*進口的人們知道,他們應該真正開放爲了宣佈並開始密切關注它,因爲它最終會影響他們。

同樣,您可以使用貴公司的良好聲譽來宣傳該圖書館;如果我想給一些隨機派對收藏庫做廣告,哪一個聽起來會更好,那麼在common.collect之下或者com.google.common.collect之下呢?

將域名部分添加到包中幾乎與實際操作無關,這是關於承擔責任併爲您的所作所爲以及您的所作所爲感到自豪。這是關於開放,關於共享,關於成爲社區的一部分,關於在全球所有軟件開發人員中的1300萬左右,你需要的是。

+1

關鍵是爲什麼com? 'google.common.collect'確實沒有那麼好的聲譽? – corsiKa 2011-03-04 21:18:12

+0

@ glowcoder:更一般地思考,TLD之間可能存在重大差異,可能會完全誤導。讀一個像魔鬼的倡導者這樣的例子絕對不會對你有任何好處。 – Esko 2011-03-04 21:48:08

+0

@glowcoder正好。正如我在OP中指出的那樣,「com.google.common.collect」和「org.google.common.collect」是具有不同命名空間(但名稱空間名稱相似)的競爭庫,可能會使開發人員感到困惑。 – 2011-03-04 21:58:09

0

證明:存在另一種非常流行的語言,有很多庫,所有在簡單的命名空間。他們沒有名稱衝突的問題。