<讀書筆記>(代碼單元層面)BMS-3: 避免代碼的重復

指導原則: 防止在代碼中出現重復. 為了達到這個目標, 需要做到如下幾個方面:

  • 寫可重用代碼
  • 寫泛型代碼
  • 重用現存的方法或函數

因為拷貝代碼, 可能導致 bug 修復時需要多處修改. 并且要經常問自己, 這個東西已經是存在的了, 為什么還要去重復寫?

必須意識到, 重復本身就是一個問題. 但是說了這么多, 到底什么才是重復呢, 下面就來看看.

1 重復的種類

實際就是兩種重復: 模式上的重復, 邏輯上的重復.

模式上的重復(type1)包括完全相同的代碼, 和在結構上完全相同的代碼.

而邏輯上的重復(type2)更難判斷.

Type1 型重復代碼定義為: 在兩段代碼中至少 6 行是一模一樣的, 一模一樣的意思是一個模式的. 當然這樣的重復是去掉了空行以及注釋之后來看的.

這種重復有一個子類型是 復制-粘貼 型的重復. 但不一定 type1 型的重復都是復制粘貼的. 因為?有時只是標識符發生了變化, 但代碼功能完全一樣, 卻在?不同地方都寫著, 這時也可以判斷為 type1 型重復, 但這時就沒辦法通過工具來檢測了.(復制粘貼的可以通過工具來檢測.)

另外還有 type2 型重復, 即在意義上是相同的, 這個就更難判斷了...

重復有時很難進行檢測和判斷, 這才是最難的地方.

本次所要講的是如何從代碼中移除 type1 型重復, 因為:

  • 可維護性的提升, 絕大多數時候都是靠移除 type1 型重復來達到的.

  • type1 型重復更加容易檢測和識別.(無論計算機還是人, 要判斷 type2 型重復都需要完全地進行句法分析)

另外對于 type1 型的 6 行限值是平衡的結果.

2 移除重復代碼的好處

下面來看減少代碼中重復的數量為什么會提升系統可維護性.

  • 重復的代碼更難分析, 特別是在修復 bug 的時候.
  • 重復的代碼更加難修改, 因為許多時候都要多處去改.

3 如何在實際工作中減少代碼中的重復

首先, 要堅決杜絕在代碼中直接復制粘貼代碼! 要重用代碼的時候就把代碼放到一個方法中, 然后在多個地方調用.

需要多用 將功能分解到方法中 這種重構手段.

另外還有一種重構方法是: 將重復的功能移動到父類或接口默認實現中.

這種方法的主要思路就是?將重復功能進行抽象, 移動到同一棵樹的上層或是橫向抽象的上層(接口)中.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,284評論 25 708
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 注視著這莊嚴的臥佛,注視著夜色中的布達拉宮,注視著虔誠的人群,注視著自己內心深處的心念…… 佛祖釋迦牟尼在《金剛經...
    眾心無相閱讀 348評論 6 3
  • “我相信上帝不存在是最簡單的解釋。沒有東西創生了宇宙,也沒有任何東西掌握我們的命運。” 打開你擁擠的腦子,用它來無...
    Li雨陽閱讀 415評論 0 0