[英]How should I name my Java 9 module?
假設我有一個groupId = org.abc
和artifactId = myLibrary
。 模塊名稱的推薦名稱是什么: myLibrary
或org.abc.myLibrary
? 是否有任何命名方案的官方指南?
有一段時間,對於您的問題有兩種不同的意見,但在模塊系統的開發過程中,社區采用了反向DNS方法。
這里假設模塊名稱應該是全局唯一的。 鑒於這一目標,最實用的方法是遵循包命名策略並反轉維護者所關聯的域名。 模塊系統狀態說 :
模塊名稱(如包名稱)不得沖突。 命名模塊的推薦方法是使用長期推薦用於命名包的反向域名模式。
此外,Mark Reinhold 寫道 :
強烈建議根據反向Internet域名約定命名所有模塊。 模塊的名稱應該與其主要導出的API包的名稱相對應,該API包也應遵循該約定。 如果模塊沒有這樣的包,或者由於遺留原因,它必須具有與其導出的包之一不對應的名稱,那么其名稱至少應該以作者的反向形式開頭。已關聯的。
這一點非常清楚,並由Stephen Colebourne等其他Java專家共享。
有一段時間(2016年初)有另一個建議進行輪次。 JDK團隊表示模塊名稱可能不一定是唯一的“因為模塊比定義它們的工件更抽象”。 Mark Reinhold寫道 :
選擇以項目或產品名稱開頭的模塊名稱。 以反向域名開頭的模塊(和包)名稱不太可能發生沖突但是它們不必要地冗長,它們從最不重要的信息(例如,
com
,org
或net
)開始,並且它們讀得不好在外部變化之后,例如開源捐贈或公司收購(例如,com.sun.*
)。在我們擁有足夠復雜的開發工具來幫助我們處理偶爾的沖突之前,反向域名方法在Java的早期是明智的。 我們現在有這樣的工具,因此,從項目或產品名稱開始的短模塊和包名稱的優越可讀性優於那些以反向域名開頭的繁瑣冗長。
此外,擁有不包含域的模塊名稱將允許將該模塊與另一個實現交換,只要它具有相同的名稱(並且當然實現相同的公共API)。
在上面的郵件中,Reinhold記錄了他的意見變化:
有些人可能更喜歡較短的,面向項目的名稱,而這些名稱可以在有限的項目中使用,這些項目永遠不會在單個組織之外看到光明。 但是,如果您創建的模塊將來很少有機會開源,那么最安全的方法是在開始時為它選擇反向DNS名稱。
陪審團參與其中,所有公開發表意見的人都同意反向DNS,就像包裹一樣。
我想我們得到馬克萊因霍爾德的“官方” 回答 :
強烈建議根據反向Internet域名約定命名所有模塊。 模塊的名稱應該與其主要導出的API包的名稱相對應,該API包也應遵循該約定。 如果模塊沒有這樣的包,或者由於遺留原因,它必須具有與其導出的包之一不對應的名稱,那么其名稱至少應該以作者的反向形式開頭。已關聯的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.