《重构》——如何如何改善代码

转载 2013年12月05日 09:53:56

 

推荐博文到论坛,
即刻奖励2积分!

代码的坏味道:

1、重复代码;
2、过长函数;
3、过大的类(C中可说过大的结构体);
4、过长参数列表;
5、发散式变化;
6、依恋情结;
7、霰弹式修改;
8、数据泥团;
9、基本类型偏执;
10、switch惊悚现身;
11、冗余类;
12、平行继承体系;
13、夸夸其谈未来性;
14、过度耦合的消息链;
15、令人迷惑的暂时字段;
16、异曲同工的类;
17、狎昵关系;
18、中间人;
19、纯稚的数据类;
20、不完美的库类;
21、过多的注释;
22、被拒绝的遗赠;
何时需要重构:
1、如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地打成目标,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。
2、重构之前首先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验能力。
3、重构技术就是以微小的步伐修改程序。如果你犯下错误,很容易便可发现它。
4、任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员。
5、重构:对软件内部结构的一种调整,目的是在不改变软件客观查行为的前提下,提高其可理解性, 降低其修改成本。
6、重构:使用一系列重构收发,在不改变软件可观察行为的前提下,调整其结构。
7、事不过三,三则重构。
8、不要过早发布接口,请修改你的代码所有权政策,使重构更顺畅。
9、当你感觉需要撰写注释时,请先尝试重构,试着让所有注释都变得多余。
重构中的测试:
1、确保所有测试都自动化,让它们检查自己的测试结果。
2、一套测试就是一个强大的BUG侦测器,能够大大缩减查找bug所需的时间。
3、频繁地运行测试,每次编译请记得把测试也考虑进去——每天至少执行每个测试一次。
4、每当收到BUG报告,请先写一个单元测试来暴露bug。
5、编写未臻完善的测试并实行实际运行,好过对完美测试的无尽等待。
6、考虑可能出错的边界条件,把测试火力集中在那儿。
7、当事情被认为应该会出错时,别忘了检查是否抛出了预期的异常。
8、不要因为测试无法捕捉所有bug就不写测试,因为测试的确可以捕捉到大多数bug。
重构步骤:
1、随时挑一个目标;
2、没有把握就停下来;
3、学习原路返回;
4、结对重构。
      之所以会找到重构,因为在公司接手了一个项目要将其转化为产品。由于代码是一年前写就的,之后在需要做演示的时候会对以前的代拿进行适当的增减,完成要演示的功能。但是至于代码的质量无法保证。于是要进行BUG查找与修复。
由于一开始代码经由三个人写就,中间代码风格不统一,每个人写函数的方式也不一样。
在进行BUG查找与修复的过程中要理解代码,并找到需要改正的地方。
       由于代码中风格不一,代码中全局变量使用广泛,长函数随处可见。由于没有采用统一的对齐方式,代码对齐混乱(也有可能是自己编辑器设置的缘故)。在理解代码的时候着实头疼。很多时候,都怕因为没有正确理解函数原意,造成修改的错误。在修改的过程中,也确实发生过修改过的函数执行出现了异常。
       在经过了艰难的初步修改后,能够正常使用。但是对于修改过程仍感到十分辛苦。在想怎么才能在修改代码的过程中能更好一些。在之后遇到的《代码大全》中介绍了《重构》。
       读了《重构》后,发现自己以前修改代码的过程,其中一部分在修改过程中不改变代码原意,而是使代码更容易理解以及添加新的功能的一些修改,专业点就可以说是重构。但是以前没有这个概念。里边介绍的一些方法,在修改的过程中都用到了一些。经过这里的总结,发现对重构理解加深了很多。或许这些,总需要先经历一番这个过程,才会看到重构的价值。
       在重构的过程中,如何把握重构的程度,需要大量的实践才能获得。如其作者Martin Fowler 所言“因为你还不知道何时应该使用它们,何时不应该使用;何时开始,何时停止;何时前进,何时等待。使重构成功的,不是前面各自独立的技术,而是这种节奏”。

《重构》——如何如何改善代码

代码的坏味道: 1、重复代码; 2、过长函数; 3、过大的类(C中可说过大的结构体); 4、过长参数列表; 5、发散式变化; 6、依恋情结; 7、霰弹式修改; 8、数据泥团; 9、基本类型偏执; 10...
  • tietao
  • tietao
  • 2013年12月03日 07:56
  • 3042

《重构》——如何如何改善代码 .

代码的坏味道: 1、重复代码; 2、过长函数; 3、过大的类(C中可说过大的结构体); 4、过长参数列表; 5、发散式变化; 6、依恋情结; 7、霰弹式修改; 8、数据泥团; 9、基...
  • TopicDev
  • TopicDev
  • 2014年02月15日 15:52
  • 500

代码重构-改善代码设计(图文+代码)

最近工作告一段落,在朋友的推荐下,在看两本书,这里也分享一下给大家: 《敏捷软件开发》《重构改善》《人月神话》《代码大全2》 如果有条件的话,建议大家多看几次,朋友说每次看都有不同的心得体...
  • TrillGates
  • TrillGates
  • 2016年12月27日 16:59
  • 445

《重构 改善既有代码的设计》读书笔记及心得体会

《重构 改善既有代码的设计》读书笔记及心得体会第一章 重构 第一个案例 重构的第一步,为即将修改的代码建立一组可靠的测试环境。 过程和方法对于项目的结果只有次要的影响,首要的影响是人 ...
  • awp0011
  • awp0011
  • 2015年12月30日 10:29
  • 954

改善代码的三部曲

一、改善代码的三部曲    《设计模式》-> 《重构》-> 《重构与模式》。也就是设计->重构->重构出新设计。    《设计模式》主要详细说明20几种模式,为我们带来了常见设计问...
  • liaodehong
  • liaodehong
  • 2016年04月13日 14:55
  • 776

大话重构——改善代码

前段时间,进行项目验收的时候。现在项目已经上线了,需要对线上的程序,添加一些新的功能——日志,来为之后的开发提供一些统计数据。日志最重要的两个功能:       一、跟踪线上程序出现bug的根源  ...
  • zc474235918
  • zc474235918
  • 2016年05月30日 21:12
  • 715

如何重构一个系统

如何重构一个系统 发现一个很有意思的情况,做系统写代码多年了,遇到的需求基本上是在已有的系统上实现,从头来实现的系统基本上没有。 1 why 无论是从头是实现一个系统,还是维护一个系统,当时实现的技术...
  • liu251
  • liu251
  • 2014年12月21日 13:52
  • 5050

重构 改善既有代码的设计——重构原则

1.何谓重构? 答: A.重构(名词意义):对软件内部结构的调整,目的是在不改变软件可观察行为的前提下,提高其理解性,降低其修改成本; B.重构(动词意义):使用一系列重构手法,在不改变软件可观...
  • zhongshujunqia
  • zhongshujunqia
  • 2016年09月08日 11:52
  • 1364

为什么要重构&如何实施代码重构?

代码重构简介:(英语:Code refactoring)重构就是在不改变软件系统外部行为的前提下,改善它的内部结构。 为什么要重构(Refactoring)??? 为什么要这么做?投入精力...
  • ztx643702008
  • ztx643702008
  • 2016年08月29日 22:01
  • 2630

《重构-改善代码既有的设计》重构,第一个案例

起点:编写3个类的代码 1、第一个类-影片(Movie):package com.lee.test.aFirstExample;public class Movie { /** * ...
  • limuzi13
  • limuzi13
  • 2016年11月16日 17:15
  • 534
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《重构》——如何如何改善代码
举报原因:
原因补充:

(最多只允许输入30个字)