包的組織

2018-02-24 15:45 更新

包的組織

我認(rèn)為一個(gè)好的架構(gòu)關(guān)鍵因素之一是代碼/包的組織:程序員瀏覽源代碼遇到的第一件事情就是包結(jié)構(gòu)。一切從它流出,一切依賴于它。

我們能夠辨別出將應(yīng)用程序封裝進(jìn)入包(package)的2個(gè)路徑:

  • 按層分包:每一個(gè)包(package)中包含的項(xiàng)通常不是彼此密切相關(guān)的。這樣包的內(nèi)聚性低、模塊化程度低,包之間偶合度高。因此,編輯某個(gè)特性要編輯來自不同包的文件。另外,單次操作幾乎不可能刪除掉某個(gè)功能特性。
  • 按特性分包:用包來體現(xiàn)特性集。把所有相關(guān)某一特性(且僅特性相關(guān))的項(xiàng)放入一個(gè)包中。這樣包的內(nèi)聚性高,模塊化程度高,包之間偶合度低。緊密相關(guān)的項(xiàng)放在一起。它們沒有分散到整個(gè)應(yīng)用程序中。

我的建議是去掉按特性分包,會(huì)帶來的好處有以下主要幾點(diǎn):

  • 模塊化程度更高
  • 代碼導(dǎo)航更容易
  • 功能特性的作用域范圍最小化了

如果與功能特性團(tuán)隊(duì)一起工作(就像我們在@SoundCloud的所作所為),也會(huì)是非常有趣的事情。代碼的所有權(quán)會(huì)更容易組織,也更容易被模塊化。在許多開發(fā)人員共用一個(gè)代碼庫的成長型組織當(dāng)中,這是一種成功。

?

如你所見,我的方法看起來就像按層分包:這里我可能會(huì)犯錯(cuò)(例如,在“users”下組織一切),但在這種情況下我會(huì)原諒自己,因?yàn)檫@是個(gè)以學(xué)習(xí)為目的的例子,而且我想顯示的是清晰架構(gòu)方法的主要概念。領(lǐng)會(huì)其意,切勿盲目模仿:-)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)