隨筆

面試過程中又面試官問代碼的結(jié)構(gòu),我不想說領(lǐng)域模型設計,因為我掌握不了精髓,更何況我們是做tob的服務,需求和bug一大坨,再好的設計也比不上甲方我需要這個功能,更沒時間去梳理什么設計和層次,只能盡量減少重復的代碼和共用。我剛?cè)肼毜墓镜臅r候完全的controller->service->dao一個類能達到上萬行,一個方法能達到幾千行,還不敢改。更不用說什么微服務。后來系統(tǒng)出現(xiàn)了瓶頸,優(yōu)化代碼和系統(tǒng)時,才算重構(gòu)了一次。

我只是想梳理下載重構(gòu)系統(tǒng)時如何減少的重復的代碼,明確每個類各自的職責。參考了領(lǐng)域模型驅(qū)動設計這本書,但我運用的只是很淺很淺的層次,每個包下面存放的都是一類的業(yè)務,具體包下面還有包分別是controller,service,repository,dao,entity,moudle。dao是連接數(shù)據(jù)庫用的類用的是mybatis框架,repository作用是操作dao,多個dao類可以共用一個repository,代表同一類業(yè)務,比如主表和明細表可以共用一個repository類,目的是減少重復的代碼,service只能訪問repository,因為我們是tob的業(yè)務,所以業(yè)務相對來說比較復雜,所以每個包下面的service包有個共用的xxService,這個標準service適用于標準,比較簡單的邏輯,,至于其他復雜的邏輯則需要另行討論和設計。一個方法盡量不超過80行,一旦一個類超過了一千行就要考慮拆分多個service類,同樣每天可能會有一個比較資深的人員過下代碼并且還要熟悉業(yè)務,為了減少代碼,一旦一個service方法沒有被引用即使刪除。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容