我们在做代码重构时,最麻烦的问题是什么?各人有各人的答案。
对我来说,找到哪一段代码需要重构是最大的麻烦。产品写好了,程序怎么样?怎么判断?对于由整个团队写的代码,全面阅读是不太现实的。开会?程序员最最不喜欢开会了!那可是个技术活。:)
最近,我用了一个小工具,SourceMonitor,取得了意想不到的好效果。推荐大家使用。
<o:p> </o:p>
SourceMonitor是一个源代码衡量工具,由http://www.campwoodsw.com/开发,免费下载。
使用方法如下:
<o:p> </o:p>
Step 1. 创建一个项目,比如,Java项目。
<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 333pt; HEIGHT: 255.75pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image001.png" o:title="sm1"></v:imagedata></v:shape>
Step 2 选择目录
<o:p></o:p>
<v:shape id="_x0000_i1026" style="WIDTH: 333pt; HEIGHT: 256.5pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image003.png" o:title="sm2"></v:imagedata></v:shape>
Step 3. 输入项目名
<v:shape id="_x0000_i1027" style="WIDTH: 333.75pt; HEIGHT: 254.25pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image005.png" o:title="sm3"></v:imagedata></v:shape>
Step 4 指定目录
<v:shape id="_x0000_i1029" style="WIDTH: 330pt; HEIGHT: 252pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image007.png" o:title="sm4"></v:imagedata></v:shape>
Step 5 指定检查点,缺省值就可。
<v:shape id="_x0000_i1028" style="WIDTH: 331.5pt; HEIGHT: 254.25pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image009.png" o:title="sm5"></v:imagedata></v:shape>
<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
Step 6 完成
<o:p></o:p>
<v:shape id="_x0000_i1035" style="WIDTH: 332.25pt; HEIGHT: 252.75pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image011.png" o:title="sm6"></v:imagedata></v:shape>
<o:p></o:p>
Step 7 指定本次检查点
<v:shape id="_x0000_i1030" style="WIDTH: 415.5pt; HEIGHT: 259.5pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image013.png" o:title="sm7"></v:imagedata></v:shape>
<o:p></o:p>
Step 8 检查结果
<v:shape id="_x0000_i1031" style="WIDTH: 414.75pt; HEIGHT: 92.25pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image015.png" o:title="sm8"></v:imagedata></v:shape>
<o:p></o:p>
Step 9 最复杂的文件,这应该是首选的准备重构的文件。<v:shape id="_x0000_i1032" style="WIDTH: 414.75pt; HEIGHT: 92.25pt" type="#_x0000_t75"> </v:shape>
<v:shape style="WIDTH: 414.75pt; HEIGHT: 92.25pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image017.png" o:title="sm9"></v:imagedata></v:shape>
Step 10 双击此行可以看到对此文件的评估。
<o:p></o:p>
<v:shape id="_x0000_i1033" style="WIDTH: 414.75pt; HEIGHT: 388.5pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image019.png" o:title="sm10"></v:imagedata></v:shape>
<o:p></o:p>
Step 11 打开文件可以直达最复杂的函数。
<v:shape id="_x0000_i1034" style="WIDTH: 414.75pt; HEIGHT: 247.5pt" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\SUMMER~1\LOCALS~1\Temp\msohtml1\01\clip_image021.png" o:title="sm11"></v:imagedata></v:shape>
<o:p> </o:p>
你看,现在寻找需要重构的函数简单多了!
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1176916
相关推荐
总的来说,SourceMonitor是一款强大的代码质量管理和重构工具,它以数据驱动的方式帮助开发者更好地理解、优化和维护他们的代码库。通过定期使用SourceMonitor进行代码分析,开发者可以持续改进项目,降低维护成本,...
Windows 脚本技术参考手册(CHM)<br>目录:<br>Windows 脚本技术 <br><br> Windows 脚本技术<br><br> JScript<br> VBScript<br> 脚本运行时<br><br> Dictionary 对象<br> FileSystemObject 对象<br> 脚本 Encoder<br>...
总的来说,SourceMonitor是一款实用的代码质量分析工具,它通过量化代码质量指标,为开发者提供了有力的支持,有助于实现更高效、更高质量的代码重构。通过持续使用和分析,开发者可以不断提升代码的可读性、可维护...
69. `<source>`: 为`<video>`或`<audio>`元素指定多个媒体资源。 70. `<span>`: 用于对元素进行分组,没有特定的语义。 71. `<style>`: 定义文档的样式信息。 72. `<sub>`: 定义下标文本。 73. `<sup>`: 定义...
<br><br>一、用ant编译源码(所有源文件及目录结构请下载)<br><br>C:\cs>ant compile<br>Buildfile: build.xml<br><br>compile:<br>[mkdir] Created dir: C:\cs\build<br>[javac] Compiling 60 source files to C:\cs...
JPEG软件解码源代码,下附软件文档部分说明:<br>Overview:<br> Functions provided by the library<br> Outline of typical usage<br>Basic library usage:<br> Data formats<br> Compression details<br> ...
作者:talent_marquis<甜菜侯爵><br>联系方式:<br>talent_marquis@163.com<br>marquis.hou@dextrys.com<br><br>简单说明:<br>这个小工具对于软件开发用户,特别是Bug fix类型的超小项目会很有用。对于普通用户用处...
来自http://www.horseb.org/opensource.htm<br>IPDOG帮助:<br>[ -x ] list network interface <br>[ -c ] [ --count ] Exit after receiving 'count' packets<br>[ -i ] [ --interface ] Listen on interface '...
<br><br>Source code and latest release are available at:<br>http://salvatoremeschini.cjb.net<br><br>History:<br> 1.0 - First release<br> 1.1 - Automatic delay management using a command line parameter...
<br><br><br>Development<br>===========<br><br>If you're interested in changing and extending ProGuard, you can start by<br>compiling the source code yourself:<br><br> mkdir classes<br> javac -...
c#入门经典中文第三版,针对vs2005,...<br>/***************************************/<br>第1部分<br>http://download.csdn.net/source/427034<br>第2部分<br>http://download.csdn.net/source/427056<br>第3部分<br>...
Subclipse 1.4.x requires Subversion 1.5.0 version of JavaHL/SVNKit <br><br>Links for 1.4.x Release:<br>Changelog: http://subclipse.tigris.org/subclipse_1.4.x/changes.html<br>Eclipse update site URL: ...
c#入门经典中文第三版,针对vs2005,...<br>/***************************************/<br>第1部分<br>http://download.csdn.net/source/427034<br>第2部分<br>http://download.csdn.net/source/427056<br>第3部分<br>...
7. `mv <source> <destination>`:移动或重命名文件或目录。 8. `rm <file>`:删除文件,`rm -r <directory>`删除目录。 9. `chmod <permissions> <file>`:更改文件或目录的权限。 10. `sudo <command>`:以超级...
<br><br>* 1.Copy it onto the SourceInsight path.<br><br>* 2.Please select "Project/Open Project", open "Base" project.<br><br>* 3.Added the ultraedit.em onto Base project.<br><br>* 4.Restart Source...
Source Monitor通过计算循环、条件语句和嵌套结构来确定每个函数的圈复杂度,帮助开发者识别可能过于复杂的代码段,以期进行重构优化。 **二、代码深度注释率** 良好的注释是代码可读性和可维护性的保证。Source ...
<br><br>主要特点:<br><br> * 支持SDI,MDI窗口,Dialog,MessageBox对话窗口。嵌入式,Dockable窗口。<br> * 支持Delphi标准控件,并支持大量第三方控件。<br> * 完美支持DevExpress QuantumnGrid5.<br> * 完美...