代碼重構相關資源

碼頭工人 13年前發布 | 13K 次閱讀 代碼


什么是重構:


1、Refactoring是對已經完成的代碼進行改進的過程。在不 對代碼的外部行為進行改動的情況下,對代碼內部的結 構進行優化。

2、Refactoring是嚴謹地對完成的代碼進行清理的從而減少 出錯的一種方法。

3、Refactoring的實質是對完成代碼的設計進行改進。

4、Refactoring是XP項目中每天的例行練習。

5、Refactoring必須和Test-Driven Design and Development伴隨進行。


Refactoring的目的:

1. 改進軟件的設計。

  程序員對代碼所做的為了滿足短期利益代碼改動,或再沒有完全清 楚增個架構下的改動,都很容易是代碼失去它的清晰結構,偏離需求或設計。而這些改動的積累很容易使代碼偏離它原先設計的初衷而變得不可立即和無法維護。Refactoring則幫助重新組織代碼,重新清晰的體現結構和進一步改進設計。


2. 提高代碼質量,可維護性。

  容易理解的代碼可以很容易的維護和做進一步的開發。即使對寫這 些代碼的程序員本身,容易理解代碼也可以幫助容易地做修改。程序代碼也是文檔。而代碼首先是寫給人看的,讓后才是給計算機看的。
 
3. Refactoring幫助盡早的發現錯誤(Defects)

  Refactoring是一個code review和反饋的過程。在另一個時段重新審視自己或別人代碼,可以更容易的發現問題和加深對代碼的理解。 Refactoring是一個良好的軟件開發習慣。


4. Refactoring可以提高提高開發速度

  Refactoring對設計和代碼的改進,都可以有效的提高開發速度。 好的設計和代碼質量實體提高開發速度的關鍵。在一個有缺陷的設計和混亂代碼基礎上的開發,即使表面上進度較快,但本質是試延后對設計缺陷的發現和對錯誤的修改,也就是延后了開發風險,最終要在開發的后期付出更多的時間和代價。


下面介紹一些重構的相關資源,包括各種開發語言Java, Ruby, .Net, Python, PHP。

網站

Wikipedia refactoring page
Martin Fowler’s homepage about refactoring
Wiki Pages About Refactoring
Mikado Method for Large Scale Refactoring – Free draft for review
Refactoring Databases – Evolutionary Database Design
Refactoring To Patterns Catalog
Refactor my code
OODBMS Schema Refactoring Catalogue
Fortran Refactorings

文章

Code Smells
Strategies for refactoring untestable PHP code
A Developers’ Guide to Refactoring Databases
Refactoring Large Software Systems
Refactoring Automated Functional Test Scripts with iTest2
Easy Database Refactoring
Smells to Refactorings Quick Reference Guide
Refactoring Java Code
Refactoring for Python 3
Refactoring Your Rails Application

視頻

Refactoring a Legacy Java Application to Rails
Refactoring Ruby Apps
Removing Duplication by Refactoring
How Do I Refactor my Code in Visual Studio? Part 1
How Do I Refactor my Code in Visual Studio? Part 2
Refactoring Test Code
Refactor Java Method
Refactoring in Eclipse with a Closure Example
Refactoring Functionality into a Library

書籍

Refactoring: Improving the Design of Existing Code by Martin Fowler, Kent Beck, John Brant and William Opdyke
Refactoring to Patterns by Joshua Kerievsky
Refactoring: Ruby Edition Jay Fields by Jay Fields, Shane Harvie, Martin Fowler, Kent Beck
Refactoring Databases: Evolutionary Database Design by Scott J Ambler and Pramodkumar J. Sadalage
Professional Refactoring in C# & ASP.NET by Danijel Arsenovski
xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros
Refactoring in Large Software Projects: Performing Complex Restructurings Successfully by Martin Lippert and Stephen Roock

開源工具

Reek – Refactoring for Ruby
Ropeide, a python refactoring IDE
Wrangler is an interactive refactoring tool for Erlang
ExtC – Java Extract Class refactoring
Refactoring Plugin for Eclipse
Chrysalis – A tool for XML Refactoring
Cpparch – Tools for improving C++ program architecture
F# Refactor


</div> </span> </div> </div> </span> </div> </div></span>

 本文由用戶 碼頭工人 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!