分析、思考、重構

   在平時的開發中,我們總是習慣於使用過程化的思維方式來編寫代碼,沒有通過開發高內聚的方法,來結構化自己的思維,從而消除邏輯重複,邏輯複用不僅僅是指在一個平面內的邏輯複用,更應該是一種結構化的邏輯複用。下面,我用平時開發過程中一個重構的過程,來做一個描述。
   假設,現在有三個類,如下圖所示:
  

2c304196-a328-3dc6-8e11-1ec31e8e5548.png


在這三個class中,分別有三個重複的屬性:a, b, c, 而且這三個屬性具有相關性,對應於一個功能的具體實現,
而這個具體實現,分別分佈在了三個不同的業務中。首先,從這三個不同業務實現類中,抽取出一個基類。需要說明的是對於spring這樣的使用註解方式,來注入依賴關係的,基類註解的關鍵字是:@MappedSuperclass

f5a53dcf-38c6-3e94-8ec0-2c8f897b0463.png
 

在功能處理類FunctionHandler類中,對這個功能的具體實現做處理,如下圖:


b896fe05-b68d-3010-a457-b4a25cd6313e.png


參數的類型是 ABC,而不是A或B或C。利用繼承或者多態,結構化地消除重複邏輯並複用。開發高內聚的方法,我個人認爲對於消除重複邏輯,是很重要的。而高內聚的方法,肯定是存在於一個結構中的。應儘量避免使用過程化的思維習慣來開發軟件,使用結構化的面向對象的方式來思考。消除重複的邏輯,獲得變化空間!
    最後,我認爲是《測試驅動開發》,《卓有成效的程序員》給我了這樣的啓發,感謝Kent Beck!
  • 2c304196-a328-3dc6-8e11-1ec31e8e5548-thumb.png
  • 大小: 6.2 KB
  • f5a53dcf-38c6-3e94-8ec0-2c8f897b0463-thumb.png
  • 大小: 11.1 KB
  • b896fe05-b68d-3010-a457-b4a25cd6313e-thumb.png
  • 大小: 10.8 KB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章