`
SSailYang
  • 浏览: 312673 次
  • 性别: 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
重构提高编程速度
------------------------
这四个好处我都体会到了. 坚持重构会提升你的技术水平,因为你总是试图找到更优美的解决方案;而你技术水平提高了,你就能做更好的重构。

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

相关推荐

    代码重构.pdf

    《代码重构》一书由Martin Fowler编写,是软件开发领域中关于代码质量提升的经典之作。书中详细阐述了重构代码的必要性、重构的时机以及如何安全地重构代码。重构指的是在不改变软件外部行为的前提下,改进其内部...

    .java代码重构

    - 增强可读性:良好的命名规范、合理的结构设计可以使其他人更容易理解代码的功能。 - 提升性能:通过优化数据结构和算法,可以减少不必要的计算和内存消耗。 - 改善可维护性:重构后的代码更易于修改和扩展,...

    代码重构&模式

    **代码重构** 代码重构是软件开发过程中的一个重要环节,它是指在不改变代码外在行为的前提下,对代码结构、设计和实现进行改进,以提高代码的可读性、可维护性和内部结构。重构的主要目标是使软件更容易理解和修改...

    代码重构PDF

    代码重构并不意味着添加新功能或修复错误,而是对现有代码结构进行改进,使其更清晰、更易于理解和修改,同时保持原有功能不变。《代码重构》这本书是这个领域的经典之作,它深入探讨了重构的原理、方法和实践,旨在...

    代码重构 (C# & ASP.NET) 英文原版

    通过学习《代码重构 (C# & ASP.NET)》,开发者可以更好地理解和掌握重构这一关键技能,从而提高代码质量和项目成功率。书中的源代码示例,如压缩包中的 "[Wrox] Professional Refactoring in C# & ASP.NET" 文件,...

    测试驱动开发及代码重构

    在文件名“测试驱动开发及代码重构”中,可能包含了关于TDD实践的案例分析、具体步骤、最佳实践以及如何在实际项目中实施TDD和代码重构的指导。这样的资源对于学习和理解TDD方法论及其在软件开发中的应用非常有价值...

    一本代码重构的书让代码更简洁

    良好的命名能准确传达变量、函数或类的意义,使得其他开发者能够快速理解代码意图。遵循一定的命名约定,如驼峰命名法,避免使用模糊不清或过于简略的标识符,可以显著提升代码的可读性。 此外,提取函数、提取类、...

    java代码重构经验总结

    ### Java代码重构经验总结 在软件开发过程中,代码重构是一项重要的技能,它旨在不改变代码外部行为的前提下,改进其内部结构,从而提升代码质量和可维护性。本文将深入探讨Java代码重构的关键点,涵盖重构原则、...

    代码重构总结实例

    代码重构是一种改善软件设计、提升代码可读性和可维护性的技术。它并不改变代码的外在行为,而是通过改进代码结构来提高代码质量。在这个"代码重构总结实例"中,我们将探讨一系列相关知识点,包括重构的原因、原则、...

    代码重构源码(包含重构前后代码)

    此外,可能会看到更清晰的命名,帮助开发者更快地理解代码意图。 面向对象设计原则,如开闭原则、里氏替换原则、依赖倒置原则等,在重构过程中起着关键作用。通过应用这些原则,可以确保代码的灵活性和可扩展性。...

    软件工程中的代码重构技术.pptx

    ### 软件工程中的代码重构技术 #### 第1章:简介 **1.1 什么是代码重构** 代码重构是一种软件工程活动,旨在不改变软件的外部行为的情况下,改进其内部结构和设计。这一过程有助于增强代码的质量和可维护性。 **...

    Java 代码重构实例

    Java代码重构是一种优化编程实践,旨在改进代码的结构和可读性,而不改变其外部行为。重构对于提高软件质量和维护性至关重要,尤其是在大型项目中。以下是一些在Java重构中的关键原则和技巧,通过实例来展示如何应用...

    一本介绍如何将现有的 Java 代码重构为 Kotlin 代码的书籍

    综上所述,《从Java到Kotlin:重构指南》是一本非常适合Java开发者学习Kotlin并进行代码重构的专业书籍。它不仅提供了丰富的理论知识,还有大量的实践案例供读者参考,是从事软件开发工作的专业人士不可多得的宝贵...

    代码重构思想

    代码重构是一种重要的软件开发实践,其核心目标是改善代码的结构,提高代码的可读性和可维护性,而不改变其外在行为。这种思想在现代软件工程中扮演着至关重要的角色,尤其在大型项目和持续演进的软件系统中。 重构...

    Piranha过时代码自动重构工具 v0.3.24.zip

    同时,它也是一个很好的学习工具,帮助初学者理解代码重构的重要性和实践方法。 在提供的压缩包文件中,“说明.htm”可能是Piranha的使用指南或详细说明文档,包含了如何安装、配置以及使用Piranha的步骤和注意事项...

    SourceMonitor: 代码重构的小工具,大用场

    通过深入理解代码结构,SourceMonitor提供了一种直观的方式来了解项目中的关键信息,包括代码行数、注释比例、类和方法的复杂性等。 **核心功能** 1. **代码统计**:SourceMonitor可以精确地统计项目中每种语言...

    C#代码重构31法

    《C#代码重构31法》是对C#编程实践中提高代码质量、可读性和可维护性的31种重构技术的总结。这些重构方法旨在优化代码结构,减少冗余,提高效率,同时也使得代码更加模块化,易于理解和测试。以下是部分重构方法的...

    swift-高仿微信iOSAppTemplate代码重构

    这个项目名为"swift-高仿微信iOSAppTemplate代码重构",旨在通过重构代码来提升应用的可读性、可维护性和性能。在这个过程中,开发者将深入理解Swift的面向对象编程、MVVM设计模式、网络请求处理、UI布局以及数据...

Global site tag (gtag.js) - Google Analytics