遺留代碼

關鍵詞:遺留代碼,代碼修改,測試


概述

遺留代碼

從其他人或者其他版本獲得的代碼。

特點

架構設計差

代碼風格不一致

文檔少和模糊

非常有價值,成功代碼

修改遺留代碼原因

新功能

Bug

重構

優化

 

修改

Risky change 修改風險

  • What changes do we have to make? 哪些是必須修改的內容
  • How will we know that we’ve done them correctly? 修改正確嗎
  • How will we know that we haven’t broken anything? 修改無副作用嗎

加快理解代碼實現

  • Notes/Sketching     筆記和草圖
  • Listing markup       搜索所有關鍵字
  • Scratch refactoring    重構
  • Delete unused code   刪除次要代碼

如何防止破壞代碼

  • 隔離新代碼
  • 新生方法 (sprout method)
  • 包裹方法(wrap method)

Sensing & separatin 感知和隔離

 

修改耗時的原因:

  • 理解設計和代碼
  • 修改副作用檢查
  • 編譯時間
  • 無單元測試
  • 測試反饋慢(feedback slow)

修改正確嗎

  • Hyperaware editing      小心翼翼修改
  • Single-goal editing       修改高度內聚,一次只改一個功能
  • Preserve signatures      簽名修改
  • Lean on the compiler     使用編譯器檢查修改

 

工具和流程

流程

  •   Mindset/Books    思想,書 
  •   Code                   一起編碼
  •   TDD/BDD            單元測試
  •   Code Coverage   代碼覆蓋率
  •   CI                           代碼集成
  •   Static Analysis    代碼靜態分析
  •  Code Review        代碼評審

工具

  Lexical analysis

 命名, 代碼風格

  Flow/path analysis

 空指針,無用代碼

C++ - Covtool, gcov

C++ - CppUTest.  so mycoworkers don't break my codes. 防止同事誤操作

  Dependency analysis

 架構

 C++- (Sp)Lint

  Verification

 C++- Jenkins (Shell/Make)

 

單元測試,保持代碼整潔

• test individual units                                              測試粒度

• isolate each part                                                  隔離每個單元

• show that the individual parts are correct       正確性驗證

• regression testing                                               迴歸測試

• sort of living documentation                              動態文檔

• executed within a framework                            自動化框架


It's an hard work but (usually) not impossible !

參考

Working.Effectively.with.Legacy.Code



發佈了37 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章