簡報領域分離

2003 年 10 月 9 日

我發現並遵循的最有用的設計原則之一,就是讓程式(使用者介面)的簡報面向與其他功能保持良好的分離。多年來,我見過這麼做,我見過許多好處

  • 當簡報邏輯和領域邏輯分開時,會更容易理解。
  • 您可以在同一個基礎程式上支援多個簡報,而不會重複程式碼。
  • 使用者介面很難測試,分離會讓更多邏輯處於更可測試的地方。
  • 您可以輕鬆新增一個用於指令碼編寫或公開為服務的程式化 API(我實際上將這些視為替代簡報)。
  • 簡報程式碼需要不同的技能和知識才能編寫領域程式碼。

儘管有這麼多優點,但我經常看到這個原則被違反。我認為這部分是因為缺乏知識,部分是因為許多架構讓將領域邏輯混入簡報變得太容易,而且讓維護分離變得更困難。

不要誤認為這是客戶端/伺服器實體分離。即使您的所有程式碼都在同一台機器上執行,進行這個邏輯分離也是很值得的。

這個原則是 Model View Controller (MVC) 最突出的部分,事實上,對許多人來說,MVC 就是他們描述這個分離的方式。

請記住,網路服務等事物也是簡報,即使它們是由電腦使用者而不是人類使用者使用的。因此,不要將領域程式碼與支援網路服務所需的程式碼混在一起,或者不要與任何其他外部 API 混在一起。

(我也在 IEEE Software 專欄 中寫過這個主題。)