`
SSailYang
  • 浏览: 308711 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

我理解的代码重构

阅读更多

 

参加了两天的代码重构培训,虽时间有限,但收获颇丰。下面是我参加这门培训之后的总结,以及一些思考和感想。

重构的重要性

简单来说,要重构代码的原因就是代码变坏了。代码变得越来越长、越来愈复杂,同时又没有适时地优化代码、重组代码。这样,渐渐地,代码的可读性、可维护性便变得越来越差了。其实,软件产品的开发成本只是其中一小部分,而占得更多的则是维护成本和部署成本。而一个没有经过代码重构的软件产品,其维护成本和部署成本必定高昂的。甚至不少软件产品不得不重写代码。所以,对于软件,尤其是一个产品来说,代码重构是必需品。如何进行代码重构则是每一个软件开发人员应该具备的技能。

重构的好处

这里拷贝粘贴一下 Martin Fowler 那本经典的《重构》里的相关内容。
  • 重构改进软件设计
  • 重构使软件更容易理解
  • 重构帮助找到bug
  • 重构提高编程速度

(如果对最后一点有争议,请看《重构》中的详解,见新版P57)

重构所反映的编程价值观

有一些程序员认为编程就是编写出满足性能和功能需求的代码。在这一方针的指导下,他们往往在实现了功能并通过测试之后就万事大吉。但实际上,这只是软件开发的最基本要求。正如 Martin Fowler 所说”任何一个傻子都能写出让电脑能懂的代码,而只有好的程序员可以写出让人能看懂的代码“。所以,要想成为一名出色的程序员,其代码的可读性是非常重要的一项指标。而一个程序员对其代码质量的态度,也很大程度上反映了其工作的态度。

如何实践代码重构

这两天的培训只能是起到启发的作用,如果不能在实际工作中通过重构改善产品的代码质量,那这个培训也就失去了意义。


实践代码重构要从一下几点着手:
  1. 识别坏味道:很多情况下,开发人员并不知道代码的问题何在,看着代码自觉地质量很好。或者看着代码觉得有些问题,却不知道问题在哪。这都是由于对代码坏味道不了解、不熟悉所致。
  2. 单元测试、自动化功能测试:没有测试的保证,恐怕 Martin Fowler 本人也不能放手去重构代码,所以单元测试、自动化功能测试是代码重构顺利实行的基础。
    在单元测试方面,最重要的
  3. 掌握重构方法:其实代码重构也没有很多高深的技术。很多代码重构的方法,当开发人员了解到什么是代码坏味道之后,自然而然就掌握了。而另外一些方法,需要一定的学习,并且有些方法是需要开发人员有设计模式的知识。而不论是什么样的重构方法,最重要的还是要不断地在工作中实践它们。
  4. TDD 和结对编程:TDD、结对编程 和代码重构都是敏捷开发所强调的技术(代码重构其实也是 TDD 中的一环)。在开发新项目时,采用 TDD 和结对编程可以更好地使代码在第一时间里被重构。
    TDD 的通常流程为“确定 To do list”->“写测试,测试失败”->“实现 Code,通过测试”->“重构代码,并保证测试通过”->“重复这一过程,直到完成 To do list 中的全部内容”。
    对于结对编程,它的好处在于通过观察者的引入,使得可以保证代码重构的质量。(当然,前提是两者都对代码重构有一定的认识)
  5. 使用合适的编程工具(IDE 等):好的工具可以使你在重构代码的时候觉得得心应手。在 IDE 方面,IntelliJ IDEA 毫无疑问是首选(当你使用 IntelliJ IDEA 使用熟练的时候,你可以体会到运指如飞的快感)。在 SCM 方面,Git 在分支方面对传统的 SVN 这样的代码管理工具的优势,使得你可以不必担心尚未重构完成的代码对主分支的负面影响(当然,重构应当是小步进行的)。Git 还可以结合 Gerrit,推动团队更好地 code review。诸如 PMD、Sonar 可以帮助团队对代码质量作出有效的控制。Jenkins 这样的持续集成工具的重要性自不必说。
2
1
分享到:
评论
1 楼 Mybeautiful 2011-10-21  
重构改进软件设计
重构使软件更容易理解
重构帮助找到bug
重构提高编程速度
------------------------
这四个好处我都体会到了. 坚持重构会提升你的技术水平,因为你总是试图找到更优美的解决方案;而你技术水平提高了,你就能做更好的重构。

顺便也说下设计模式,我觉得设计模式本身并不难,其实就是面向对象原则的具体问题的具体实施方案,当我们用了之后,原来是这么简单。觉得难的时候,大多数是被那些晦涩的概念吓着了,或是基础知识有待提升。

相关推荐

    代码重构(C# & ASP.NET版),中文完整扫描版

    在《代码重构(C#&ASP.NET版)》中首次提供了在c#和asp.net中进行重构的专业方法,您将学习如何运用重构技术管理和修改代码。此外,还将学习如何从头开始构建原型应用程序,然后利用重构技术将原型转换为正确设计的、...

    重构:改善既有代码的设计

    重构:改善既有代码的设计 中文PDF清晰版 Martin Fowler和《重构:改善既有...某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。 -- 摘自豆瓣

    《重构改善既有代码的设计(中文版)》(Martin Fowler[美] 著,候捷、熊节 译)

    Martin Fowler和《重构:改善既有代码的设计...某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。点击进入该书更多详细信息。 ——《豆瓣读书》

    重构-改善既有代码的设计[高清免费下载]

    看过这本书的收获是,让重构融于整个写代码的过程中,让重构不再作为一项独立的任务,而是在写代码的过程中随时随地的进行,一个函数不容易理解,重构;添加新功能时很不方便,重构,使添加新功能变得理解。

    重构-改善既有代码的设计(PDF)

    今天,无论是重构本身,业界对重构的理解,还是开发工具对重构的支持力度,都与本书出版时不可同日而语,但书中所蕴涵的意味和精华,依然值得反复咀嚼,而且往往能够常读常新。 本书清晰揭示了重构的过程,解释了...

    重构_改善既有代码的设计.pdf

    清晰揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。

    重构-改善既有代码的设计(中文版)

    某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快...

    重构-改善即有代码的设计

    内容简介回到顶部↑ 重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分...

    重构--改善既有代码的设计.epub

    某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快...

    重构_改善既有代码的设计(中文版) Martin Fowler

    Martin Fowler和《重构:改善既有代码的设计》(中文版)另几位作者清楚揭示了重构过程,他们...某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。

    重构-改善既有代码的设计.chm

    某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快...

    重构_改善既有代码的设计(中文版本)高清

    今天,无论是重构本身,业界对重构的理解,还是开发工具对重构的支持力度,都与本书最初出版时不可同日而语。英文注释版根据原作者MartinFowler维护的本书网站,对原书进行了扩充,加入了大量新增重构,使这部不朽...

    重构-改善既有代码的设计(chm清晰版)

    某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快...

    代码重构_改善既有代码的设计

    Martin Flower在《重构》中有一句经典的话:"任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。"对此,笔者感触很深,有些程序员总是能够快速编写出可运行的代码,但代码中...

    重构改善既有代码的设计-Refactoring:Improving the Design of Existing Code

    在不改变代码外在行为的...任何傻瓜都可以写出计算机理解的代码。 只有写出能被人类所理解的代码,才是优秀的程序员 重构可以改进软件的设计 重构让软件变得易于理解 重构可以帮助你发现Bug 重构可以帮助你更快地编程

    重构,改善既有代码的设计

    看过这本书的收获是,让重构融于整个写代码的过程中,让重构不再作为一项独立的任务,而是在写代码的过程中随时随地的进行,一个函数不容易理解,重构;添加新功能时很不方便,重构,使添加新功能变得理解。

    重构 改善既有代码的设计(清晰版)

    重构 改善既有代码的设计(清晰版)比JVM虚拟机的那个PDF清楚多了 里面的内容 代码加解释 很容易理解 对自己写代码帮助很大

    重构-改善既有代码的设计

    《 重构 - 改善既有代码的设计 》 这本书可以让你很深刻的理解到代码重构的重要性,特别是在项目开始变得维护困难的时候,试试代码重构吧

    重构_改善既有代码的设计

    Martin Fowler和《重构:改善既有代码的设计》(中文版)另几位作者清楚揭示了重构过程,他们...某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。

Global site tag (gtag.js) - Google Analytics