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

原创 2013年12月03日 07:56:47
代码的坏味道:
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查找与修复的过程中要理解代码,并找到需要改正的地方。
由于代码中风格不一,代码中全局变量使用广泛,长函数随处可见。由于没有采用统一的对齐方式,代码对齐混乱(也有可能是自己编辑器设置的缘故)。在理解代码的时候着实头疼。很多时候,都怕因为没有正确理解函数原意,造成修改的错误。在修改的过程中,也确实发生过修改过的函数执行出现了异常。
在经过了艰难的初步修改后,能够正常使用,但却也因为自己的修改引入了新的BUG。对于修改过程仍感到十分痛苦。在想怎么才能在修改代码的过程中能更好一些,更遵循代码的愿意,同时改善代码。在之后遇到的《代码大全》中介绍了《重构》。
读了《重构》后,发现自己以前修改代码的过程,其中一部分在修改过程中不改变代码原意,而是使代码更容易理解以及添加新的功能的一些修改,专业点就可以说是重构。但是以前没有这个概念。里边介绍的一些方法,在修改的过程中都用到了一些。经过这里的总结,发现对重构理解加深了很多。或许这些,总需要先经历一番这个过程,才会看到重构的价值。
在重构的过程中,如何把握重构的度,需要大量的实践才能获得。如其作者Martin Fowler 所言“因为你还不知道何时应该使用它们,何时不应该使用;何时开始,何时停止;何时前进,何时等待。使重构成功的,不是前面各自独立的技术,而是这种节奏”。
版权声明:本文为博主原创文章,未经博主允许不得转载。

C语言的面向对象式重构

                                            C语言的面向对象式重构 从Martin Fowler最早提出重构的概念开始,到现在已经有很长时间了,...
  • jinchengzhou
  • jinchengzhou
  • 2015年05月07日 11:39
  • 657

C语言代码重构

一个小问题,代码写着写着,杂乱不堪,不忍直视。程序首先是写给人看的,然后才是计算机,于是乎,唯有重构 C语言的代码,以函数为模块  首先要注意的是命名,好的命名方式,函数的功能一目了然,加快理...
  • maochengtao
  • maochengtao
  • 2015年05月19日 17:20
  • 1972

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

  • 2018年01月07日 17:01
  • 30.96MB
  • 下载

《对C语言编写的银行系统用C++进行重构——3》

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:  ...
  • sdliujiangbo
  • sdliujiangbo
  • 2012年08月23日 23:03
  • 2224

C语言代码重构

一个小问题,代码写着写着,杂乱不堪,不忍直视。程序首先是写给人看的,然后才是计算机,于是乎,唯有重构C语言的代码,以函数为模块 首先要注意的是命名,好的命名方式,函数的功能一目了然,加快理解 再者...
  • destinyuan
  • destinyuan
  • 2015年05月07日 14:34
  • 850

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

代码的坏味道: 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
  • 444

《对C语言编写的银行系统用C++进行重构——1》

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: 《...
  • sdliujiangbo
  • sdliujiangbo
  • 2012年08月21日 18:45
  • 2407

做游戏,学编程(C语言) 3 利用函数对飞机游戏进行重构

在进行这个教程的学习前,强烈建议大家先尝试下教程2中的思考题,大概要一百多行代码,是对C语言基本语法、逻辑能力的一个很好的锻炼。 没有学习函数,以上功能都在main中实现,是有点痛苦的。学了函数后,...
  • quhaoye
  • quhaoye
  • 2017年04月30日 16:28
  • 556

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

《重构 改善既有代码的设计》读书笔记及心得体会第一章 重构 第一个案例 重构的第一步,为即将修改的代码建立一组可靠的测试环境。 过程和方法对于项目的结果只有次要的影响,首要的影响是人 ...
  • awp0011
  • awp0011
  • 2015年12月30日 10:29
  • 950
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《重构》——如何如何改善代码
举报原因:
原因补充:

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