2010-09-09 178 views
31

假設您正在致力於BarBaz Incorporated的foo項目的核心模塊。您的代碼片段可能是這樣的:Java包中的公司名稱

package com.barbaz.foo.core; 

import com.barbaz.foo.util; 

將公約是如果你的公司的網站是不是barbaz.com,而是bar-baz.com

+0

因此,原來存在的建築物的另一端Java發生量小,雖然我沒有發現這一點,直到我問了之後題。按照這個例子的格式,他們的方法是'com.bb.foo。*;',考慮到所有的遺留系統是bbs,bbw,bbj,bbl和什麼都不是,這是合理的。感謝您的輸入! – corsiKa 2010-09-09 16:42:08

回答

47

Java Language Spec給出了一個建議的約定:

如果域名包含連字符,或任何其他特殊字符的標識符不允許(第3.8節),將其轉換成一個下劃線。

但它只是一個建議...

+11

這很有趣,考慮了大多數Java建議如何建議不要在大多數標識符中使用下劃線。 – corsiKa 2010-10-19 00:09:48

7

只需放下連字符即可。包名稱根本不需要匹配網站名稱。更重要的是,公司生產的包裝之間具有一致性,因此它們都使用相同的基本包裝名稱。

+0

它也用於避免庫中的命名空間衝突。如果barbaz.com使用bar-baz.com的圖書館(誰刪除了連字符)創建了一個產品,則可能會有衝突。在實踐中,這是不太可笑的。 – 2010-09-09 16:35:58

+11

如果barbaz.com和bar-baz.com都在製作圖書館,其中一個會起訴另一個圖書館。 – 2010-09-09 17:00:45

+0

經過進一步考慮,我不得不將複選框給Steve的建議。查看我對Jon Skeet回答爲什麼的評論中的鏈接。 – corsiKa 2013-10-18 16:54:27

13

我個人只是刪除連字符。你可能改變成一個下劃線,但這看起來很醜。

這是非常不可能的,它的真的將與另一家公司同名減去連字符衝突。即使兩家公司都是科技公司,都使用Java,那麼任何人都有可能使用由他們兩人在同一代碼庫中創建的代碼?

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

+0

所以我再次遇到了這一天(我實際上不在同一個地方了),我偶然發現了一個[Oracle教程,底部有一個方便的圖表](http://docs.oracle.com/javase /tutorial/java/package/namingpkgs.html)。根據回機器的說法,它[自2011年底以來一直存在](http://web.archive.org/web/20111117054510/http://docs.oracle.com/javase/tutorial/java/package/namingpkgs。 HTML),在這個問題後一年。底部的建議確實讓我感到驚訝! – corsiKa 2013-10-18 16:53:33

+2

@corsiKa:Ick。對我來說看起來非常醜陋!我不記得上次我在包名中看到下劃線,說實話... – 2013-10-18 16:54:26

2

我在很多政府部門工作,我們通常使用下劃線bar_baz。

42

我剛剛查看了瀏覽器的歷史記錄,在過去的2個月中,我還沒有訪問帶連字符的單個域。因此,公約將重新命名公司。

或者,不要使用連字符,因爲BazBaz不會在其自身中包含Baz = Baz的代碼。

+3

太棒了。我喜歡。 – 2010-09-09 16:31:03

+0

我認爲董事會會採取這種方法,但我也樂此不疲! – corsiKa 2010-09-09 16:36:34

+0

顯然,只有提問者可以接受答案。不幸的是... – root 2013-07-02 19:33:12