程式碼架構設計-1.為什麼要做好程式碼架構設計
在專案的開始階段,一件必不可少的的事情就是就是確定程式碼的分層和架構。該分層和架構在一定程度上決定了未來整個專案的程式碼風格和維護性,對於專案的長期維護,程式碼架構的設計是一件非常重要的事情。
在介紹程式碼架構的設計之前,首先我們先談
論下為什麼程式碼架構的設計師是一件非常重要的事情。
為什麼要有程式碼架構簡單來講,程式碼架構是為了提供更好的可讀性和可維護性。
提高可讀性和可維護性
大家可能還記得剛開始寫程式碼的時候,所有的程式碼都會集中在一個檔案,甚至一個函式中,比如:
# main.pydef main(args: List[str]): input args validation... ... do first thing... ... do second thing... ... do third thing... ...
隨著需求的增長,程式碼量的擴大,這樣的程式碼是很難閱讀和進行維護的,於是我們會使用重構的手段去讓程式碼更便於維護和閱讀:
# main.pydef do_first_thing(args: List[str]): ...def do_second_thing(args: List[str]): ...def do_third_thing(args: List[str]): ...def validation(args: List[str]): ...def main(args: List[str]): validation(args) do_first_thing(args) do_second_thing(args) do_third_thing(args)
進一步,我們將程式碼分散在不同的檔案、資料夾中,透過良好的命名,我們甚至可以在不去看具體的程式碼實現的情況下,僅僅透過檔名就能判斷出在做的事情:
│ main.py │ ├───job │ first.py │ second.py │ third.py │ └───validation input_params_validation.py
而更深層次的,程式碼架構的設計會降低程式碼的腐化速度
降低程式碼的腐化速度
通常在一個專案新起的時候,專案程式碼的可讀性,維護性都會做的很好,然而隨著專案的龐大,不同背景不同能力的開發人員的進場和離場,程式碼的可讀性和可維護性都會漸漸的變差,這個是一個專案進行過程中不可避免的,聰明的團隊通常不但會制定一系列的比如程式碼質量掃描,程式碼review等手段降低程式碼的腐化速度,還會在在需求的開發過程中安排一定資源的程式碼重構的任務,去不斷重構腐化的程式碼。
而一個好的程式碼架構,也會在一定程度上制約開發人員“生產”腐化程式碼的可能,從而降低了程式碼的腐化速度。這是因為在制定了程式碼架構之後,入場的開發人員們通常會選擇遵從程式碼架構的規則編寫程式碼,透過規則的制約,可以很好的制止一些不謹慎的程式碼的產生。
我們透過一個反例來看看,一個不好的程式碼架構會對專案的開發產生怎樣的影響。
在一個真實專案中,大家制訂了一個這樣的簡單程式碼架構:
專案程式碼使用簡單的Controller->Service->Repository->Entity分層,其中Entity層作為資料庫的對映,並且整個程式碼架構中,可以隨意傳遞entity, 甚至直接將entity傳遞出去
這樣的程式碼架構會導致以下幾個問題:
沒有DTO的存在,開發人員會因為方便傾向於把entity直接丟出去作為request和response的資料對映。這樣當出現傳入引數和資料庫table設計出現不一致時,會出現很多的程式碼問題。
由於並沒有任何相關的約束並且由於#1,開發人員有可能將業務邏輯相關的程式碼同時放在controller和service中。這種做法會導致controller和service層出現強耦合,並且業務邏輯被分散在程式碼的各個角落,導致很難去閱讀進一步降低可維護性。
由於程式碼的事務控制是在service層做的,因為#2的原因,很多人在開發過程中並沒有一個對系統的全域性概念,直接導致了很多的業務程式碼出現了只能部分回滾資料的問題,直接導致的很多bug的出現。
由上文可以看到,一個好的程式碼架構設計對於專案的必要性。接下來將介紹在web service中,比較常使用的程式碼組織架構。
作者:夜月下
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3209/viewspace-2802053/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面向架構程式設計架構程式設計
- 小程式渲染架構設計架構
- 為什麼以及如何要進行架構設計權衡?架構
- 為什麼IT程式設計師都不願意重構程式碼?程式設計師
- thrift原始碼分析-架構設計原始碼架構
- 為什麼大部分 PHP 程式設計師做不了架構師?PHP程式設計師架構
- 架構設計思想-微服務架構設計模式架構微服務設計模式
- Java程式設計架構實戰——OKHTTP3原始碼和設計模式(上篇)Java程式設計架構HTTP原始碼設計模式
- 什麼是真正的架構設計?架構
- 作為程式設計師為什麼要閱讀原始碼程式設計師原始碼
- HBase的架構設計為什麼這麼厲害!架構
- Java程式設計細節-重構-為什麼 if-else 不是好程式碼Java程式設計
- 什麼是軟體架構設計?- Grady架構
- 0801-深度學習程式架構設計深度學習架構
- 遊戲架構設計——高效能並行程式設計遊戲架構並行行程程式設計
- 程式設計師你是怎麼繪製架構圖?程式設計師架構
- “大話架構”阿里架構師分享的Java程式設計師需要突破的技術要點架構阿里Java程式設計師
- 架構設計之架構的演變架構
- 架構設計之一——基礎架構架構
- Java程式設計——重構-你為什麼要對引數賦值?Java程式設計賦值
- Java程式設計架構深入解析-RPC訊息協議設計Java程式設計架構RPC協議
- 從 React 架構開始講解 useState、useEffect 程式設計設計React架構程式設計
- 架構師修煉之道(二)——架構?設計?架構師?架構
- 老生常談!程式設計師為什麼要閱讀原始碼?程式設計師原始碼
- Java程式設計師如何成為優秀的架構師Java程式設計師架構
- Netty 原始碼分析系列(二)Netty 架構設計Netty原始碼架構
- 程式設計師,真有必要了解架構嗎?程式設計師架構
- 程式設計師、技術主管和架構師程式設計師架構
- Netty-架構設計及入門程式-3Netty架構
- particle雲架構程式碼結構架構
- java架構的程式碼結構Java架構
- 《架構整潔之道》第 1 章 設計與架構究竟是什麼架構
- 遊戲架構 遊戲架構設計(8)遊戲架構
- SaaS架構:開放平臺架構設計架構
- 什麼是基礎架構即程式碼(IaC)-dev架構dev
- 程式設計體系結構(09):分散式系統架構程式設計分散式架構
- 【架構設計】無狀態狀態機在程式碼中的實踐架構
- 網站架構設計網站架構