`
david_je
  • 浏览: 371999 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于重构

 
阅读更多

    说道重构,不同的人有不同的看法。作为一个工作了四五年的码农,我也谈谈自己的看法。正好今天参加了关于代码整洁之道的培训,也印证的自己对于重构的一些想法。

    在互联网高速发展的今天,重构和持续集成一样,成为了软件开发中不可或缺的一部分,伴随着软件的整个生命周期。但是重构和持续集成不一样,重构是程序员的一种自发行为,有时候很难得到boss们的理解和支持,特别是一些从没有写过代码的PM,可能觉得重构根本就是在浪费时间。因为重构很难去衡量和计算KPI。对于他们来说,好的程序员和坏的程序员没有本质的区别。加上整个大环境的因素,很难有程序员能安心去把重构进行到底。所以和BOSS们的沟通很重要,要让PM认识到重构的重要性和必要性。

    既然重构这么重要,那什么是重构,为什么要重构和如何要重构呢?这些疑问会马上进入到你的大脑中。

    什么是重构?这里引用Martin Fowler在重构这本书中的定义。重构是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,使用一系列重构的方法,调整其结构,提高其可理解行,降低其修改成本。从这个定义来说,重构就是整理代码。从技术角度来说,重构就是利用一系列高效且受控的代码整理技术来修改代码,提高代码的可读性,稳定性,可扩展性和可维护性。重构的前后,不改变或者很少改变软件可观察行的外部外部行为。这里主要有两点,第一重构的方法,第二改变内在和不改变外在。

     为什么要重构?从软件设计来说,在整个软件生命周期中,需求的变更是不可避免的一直会发生的。程序员在没有充分考虑整个软件设计的前提下,就去修改代码,程序会逐渐失去原有的设计结构,代码变得越来越难以阅读和维护。最典型的就是在一个function中没添加一个需求,就增加一堆if/else。等积累到一定程度,可能根本就没有人能读懂它,维护成本可想而知。从设计角度来看,架构设计是基于一些基础条件的,在运行过程中,承载的数量级的变化,这些基础条件很可能发生变化,当到达一个瓶颈的时候,软件系统很可能会发生各种各样的意外。重构就要求代码在这些基础条件发生时,能够有利于扩展和修改。这也从另外一个方面说明,架构师应该是参与代码的实现,从实现中去反馈设计的一些缺陷,减少风险。

    那如何重构呢?重构是针对代码的行为,首先要找出哪些代码需要重构。好的代码不需要重构,只有坏的代码需要重构,所以我们要找出坏的代码。用Martin Fowler的话来说,就是坏的代码散发的坏的味道。我们通过一定规则来辨别坏的代码。 好的代码的好处可能各有不同,但是坏的代码的危害,大家却是有目共睹。比如,重复代码,由于各种各样的原因,copy无处不在,就连Microsoft也经常发生这样的事情(去google一下,就会发现很多这样的小故事)。还有救是函数体积过于庞大,一个function可能有几千行代码,根本就没法读,更何况维护和修改。更多的坏味道,可以去参考Martin Fowler的书“重构”,相信你会发现,我们每天都在犯的错误。

    重构是一种程序员行为,是对自己工作负责的一种态度,所以,首先态度上要肯定重构,设别代码的坏味道,学习重构的技能,然后把这些养成习惯,融入到每天的coding中去。共勉之。

4
3
分享到:
评论
1 楼 jueyue 2013-08-26  
不错

相关推荐

    关于重构思想

    ### 关于重构思想 重构是软件开发过程中一个重要的实践,旨在改进现有代码的设计而不改变其外部行为。重构能够提高代码的可读性、可维护性和扩展性,减少未来的开发成本。《重构:改善既有代码的设计》一书由Martin...

    重构(Refactoring)英文版

    总之,《重构:改善现有代码的设计》这本书不仅是一本关于重构的技术指南,也是一本深入探讨软件设计哲学的重要著作。通过学习本书中的知识,开发者可以更好地理解和掌握重构的艺术,从而提高软件的质量和可维护性。

    软件重构技术(重构介绍、重构原则、代码的坏味道。。。)

    最后,关于压缩包内的“重构.ppt”文件,这可能是一个关于重构技术的演示文稿,涵盖了上述的各个主题。通过阅读这个文稿,开发者可以获得更深入的理解,学习如何在实际项目中有效地应用重构技术,提升软件的质量和可...

    重构pdf+chm版本

    这本书的PDF和CHM版本都包含了关于重构和代码优化的深入探讨,是学习重构技术的理想资源。 重构是软件开发中的一个关键概念,指的是在不改变软件外部行为的前提下,对代码进行修改以改进其内部结构。这一过程旨在...

    31重构 模式与重构 MVC实例

    总的来说,这个压缩包提供了关于重构、设计模式以及.NET MVC框架的宝贵资源。无论是对于初学者还是经验丰富的开发者,都能从中受益匪浅,提升自己的软件开发技能。通过阅读书籍和文章,开发者可以学习如何通过重构...

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

    《重构:改善既有代码的设计》一书由Martin Fowler撰写,并得到了Kent Beck、John Brant和William Opdyke等人的贡献,是一本关于重构技术的经典著作。 #### 关键概念与技术 1. **重构的意义** - **定义**:重构是...

    程序重构的技巧和经验

    除了重构的具体实践之外,开发者还可以通过多种渠道获取关于重构及其他软件开发相关知识的资源: - **MSDN中文网站**:提供丰富的文档和技术文章。 - **MSDN中文网络广播**:定期举办的技术讲座和研讨会,涵盖最新...

    代码到底该如何重构?.doc

    以下是关于重构的一些关键知识点: ### 1. 重构的原则 **何谓重构**: 重构是对软件内部结构的调整,目标是在不改变软件的可观察行为(即功能表现)的前提下,提高代码的可读性和可维护性,降低修改成本。这涉及一...

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

    本书还提供了一些关于重构研究的快速浏览,从而体现出重构作为一门技术的先进性。与软件模式(Software Patterns)类似,重构是一种可能即将成为主流的观念。本书作为这一领域的开创性作品,无疑将对程序设计主流...

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

    在重构领域的实践和理论研究中,John Brant和William Opdyke这两位专家也做出了重大贡献,他们的书籍《Refactoring for Software Design Smells》是关于重构的另一本经典之作。 总体而言,《重构:改善既有代码的...

    重构-改善既有代码的设计+中文版.pdf

    《重构—改善既有代码的设计》(Refactoring: Improving the Design of Existing Code)这本书,由Martin Fowler撰写,Erich Gamma作序,是一本关于重构的经典之作。 书中详细介绍了70多种重构方法,每一项方法都有...

    重构与模式(中文版)

    ### 重构与模式(中文版) #### 知识点概览 本文档主要围绕“重构与模式”这一主题展开,重点介绍了在软件开发过程中如何...希望本文能为读者提供关于重构与设计模式的深入理解,帮助大家在实践中更好地运用这些知识。

    重构:改善既有代码的设计(英文版) pdf 文字版

    这本书是软件工程领域内关于重构技术的经典之作,对软件开发人员、架构师和项目经理具有深远的影响。 ### 核心知识点: #### 1. 重构的定义与重要性 重构是一种改进已有代码结构而不改变其外部行为的过程。它旨在...

    Refactoring To Patterns《重构与模式》英文版

    《重构与模式》这本书不仅仅是关于重构和设计模式的理论介绍,更是通过丰富的实际案例和代码示例,展示了如何有效地将两者结合起来,以提升软件设计的质量。无论是对于想要深入了解软件设计领域的专业人士,还是对于...

    重构 refactoring 英文 有书签

    此外,还有关于重构最佳实践的研究,旨在总结出一套通用的指南,帮助开发者更系统地进行重构工作。 综上所述,《重构:改善既有代码设计》这本书不仅为开发者提供了一套实用的重构技巧,还介绍了重构的基本概念及其...

Global site tag (gtag.js) - Google Analytics