按功能劃分Package,而不是按層

發表於2016-03-01

按層來劃分packages就像按照專業,而不是按照團隊來劃分工人。

想象一下這種荒謬的場景:

管理層公司,工程師公司,人力資源公司以及市場營銷公司,工程師公司只有程式設計師,沒有管理、市場營銷或者人力資源;

根據是什麼東西來打包而不是根據其職能打包可以讓你尋找程式碼的時間快十倍。

blob.png

圖 1 – 按功能劃分package的一個小例子

好處

  • 看到程式碼結構你就能辨別這個app是幹嘛的(圖1);
  • 更加模組化;
  • 程式碼切換更容易;
  • 更高階別的抽象;
  • 功能和層都分離開來了;
  • 可讀性更強以及更易維護的結構
  • 更高的內聚;
  • 更易擴充套件;
  • 更少遇到改動無關類或者檔案的情況;
  • 新增或者移除功能要容易很多;
  • 更多可複用的模組。

你同意我的說法嗎?你是用的什麼方法呢?

相關文章