代碼重構相關資源
什么是重構:
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