2010-06-03 65 views
4

我正在尋找意見,或者如果有一個商定的方式這樣做,關於命名命名空間類。命名類像「com.facebook.FacebookClient」vs「com.facebook.Client」

例如爲:

com.facebook.FacebookClient 
vs 
com.facebook.Client 

或者

javax.script.ScriptEngine; 
vs 
javax.script.Engine; 

我目前喜歡在每個例子中的第一個名字,但多餘的詞似乎有點浪費。

回答

6

以Actionscript爲例,我會說客戶端上的FacebookClient。出於這個原因:

import com.facebook.Client; 
import com.twitter.Client; 

你不得不指的是由它的類的全包在同一個類來創建一個實例:

new com.facebook.Client(); 

如果是FacebookClient,我可以兼得

new FacebookClient(); 
new TwitterClient(); 

當客戶端代碼彈出時,客戶端會很煩人。額外點擊以選擇正確的客戶端;)

+0

從長遠角度來看,優化邊緣案例往往會成爲一個糟糕的主意。我會使用客戶端,然後在他們需要更多描述性名稱的情況下重新考慮(或簡單地換行)。 – sal 2010-06-03 21:29:52

+0

從長遠來看可能是真實的,但這是一個相當主觀的問題。當優化如此微不足道時,我更喜歡優化的清晰度。 – typeoneerror 2010-06-03 21:52:48

0

facebook域名是否有其他類型的客戶端? javax.script域是否有其他類型的引擎?他們未來可能會想要嗎?如果是這樣,你需要一些東西來區分它們。否則它可能被浪費空間。

當然,未來幾乎不可能確定。

0

我唯一要補充的是如果你在C#中使用using指令。如果你有兩個命名空間與client相同的方法名稱,那麼會有一個confict/confusion。

+0

儘管可以使用別名輕鬆處理此衝突。 – 2010-06-03 20:47:59

+0

@Fredrik:絕對好點!謝謝 – 2010-06-03 20:59:54

3

我一般去的東西,如:。

[公司名稱] [項目名稱] [功能區]【類別】

com.dave.megaproject.dataaccesslayer。 postcodelookup

或.NET世界:

命名空間DaveFirm.MegaProject.DataAccessLayer.PostCodeLookup

0

在一個類名和文件名是一對一的語言中,有一個參數可以用來命名類名,而不管包是什麼。我很多人通過classname來定位文件,無論是通過打開名爲<class>.java的文件還是通過在他們的IDE中使用「快速打開」。心理障礙的額外位置決定你需要哪個Client.java可能足以讓你感到煩惱,因爲你喜歡額外的命名。

而且,它使事情變得更容易閱讀,而且它不像任何現代編輯器(例如vi或更高版本),您需要多次輸入它(有時甚至不會一次)。

0

每次我都會使用FacebookClient風格的額外單詞,只是因爲名稱的最小形式更具描述性,在多文件搜索中更容易找到對該名稱的引用。