关于重构(二)

最近在看《重构改善既有代码设计》这本书,有些感悟分享给大家!!此感悟均自己瞎想,说的不对请见谅!!

这本书我已经看到第6章了,前5章可以简单的总结为:“为何重构?怎么重构?(重构的方法、原则)”

书中提及“事不过三、三则重构”,意思就是一个方法、函数用过3次或是多次就应该考虑重构了。

何时重构?

  1. 添加功能时:因为在某个功能基类可能在多个地方被用到,但客户有了写的需求,需要添加新的功能,但是你又不确定在基类中修改会不会影响其他的功能点,此时就应该重构。
  2. 修补错误时:这个情况和上述情况差不多,在修补这个错误时,你无法确定在修改之后会不会引起其他的错误,此时就应该重构
  3. 复审代码时:复审代码在许多公司在交付项目时都会对代码进行复审(可能大公司才不会有吧,至少我暂时没有遇到过),因为代码不可能是复审人员写的(这个应该说是一定不是开放人员去自己复审自己的代码),可能对某些代码段无法理解其功能,就应该重构。

为何重构?可以说重构的好处、优点在哪?

  1. 改善软件的设计:应为软件在最初设计时,没办法将所有的事情想的面面俱到,所以在后续的开发中就应该用重构来弥补软件设计的不足。
  2. 使软件更容易理解:重构可以让计算机明确你“要他去做什么”,更能让后来者读懂它,“后来者”?这是有人会问:“后来者,是何许人也?”这里可以明确的告诉你,一个项目、一个功能点不可以永远满足需求,后期肯能要有改动,可能是你、也可能是另一个程序员,你自己能不能保证自己以前写的程序,现在拿过来就知道其中某个方法的功能呢?这时有人会说:“能”,(我靠大哥不要来抬杠行不,我不太清楚别人,但对于我自己来说,是很难一下理解的,(这时有人说那是你笨,我只能说我比较懒),我身边的大多数程序员都比较懒)感觉有些跑题了,咱们把思路拉回来,接着说重构的优点,重构大部分是为了“后来者”去更容易去理解代码的
  3. 帮助找到BUG:因为一些代码在一起可能无法一眼看出其中的BUg或是隐藏在深处的潜在BUg,我们需要去重构
  4. 提高编程速度:大家看到这会说,上面可以理解,重构怎么会能提高编程速度呢?书上说了一套书面话,我用大白话将它“翻译”了一下,是因为我们在最初设计软件时没办法设计的非常合理,在后期可能添加新功能,我们会化大把的时间花在调试、修改、调试、修改上,首先我们要花费很长时间去了解系统、理解代码,工期就会被拖长,(时间长领导就对经理说: 怎么搞的搞了这么长时间还没弄好?这时经理就找你了说: “就一个简单的问题搞了这么长时间,还没弄好?”,你心情不好,工作带有情绪,你辞职了,又来一新员工接着做你没做完的问题,形成恶性循环,当然我们抛出公司领导的管理问题,经理的管理能力、技术能力,我们单单站在程序员的角度去看问题)

说了这么多?有人就会问什么是重构啊?要知故事如何且待下回分解!!

时间: 2024-08-30 11:07:49

关于重构(二)的相关文章

重构二维数组。key 是id val 是更新字段

$arr=Array ( 'contract_type' => Array (   '0' => 0, '1' => 0, '2' => 0,'3' => 0, ), 'use_contract' => Array (  '0' => 7,  '1' => 8,  '2' => 9, '3' => 10, ), 'use_name' => Array (   '0' => '合同人1',  '1' => '合同人2',  '2'

代码重构(二):类重构规则(Swift版)

在上篇博客<代码重构(一):函数重构规则(Swift版)>中,详细的介绍了函数的重构规则,其中主要包括:Extract Method, Inline Method, Inline Temp, Replace Temp with Query, Introduce Explaining Variable, Split Temporary Variable, Remove Assignments to Parameters, Replace Method with Method Object等.关于

ios - iPhone开发重构:从硬编码到模型到规律

无论在iPhone开发还是学习的过程中都会看到一些不是很理想的代码,不可 否认自己也在不断“贡献”着这类代码.面对一些代码的“坏味道”,重构显然 是个有效的解决途径.<iPhone开发重构>系列就想总结和补充iPhone开发中经 历的一些重构,其间可能会引用一些开源以及实际项目的代码,本着对技术的探 求,冒昧之处还请作者多多见谅. 在iPhone开发的过程中经常会遇到根据不同的Table行或者标识符推入不同 的Controller的需要,一个最直接的实现就是硬编码,通过if…else if…e

[一个轮显插件的尝试、思考和扩展](转)

写在前面 自己的一点想法 "解决一个问题,最重要的收获并不是得到的答案.而是在寻找答案的过程中,学到的其它东西和见识的延伸." ---<反正我从中学到不少东西> ”我敬你是条汉子!“ ---<论如何回答女朋友问为什么对她那么好> 希望能够把文章大致扫一遍,里面有一些有趣的demo哦......哒 效果见页面顶部 或者如下: 显示border 隐藏border 显示切换栏 隐藏切换栏 等等api见下面描述 ? 1 2 3 4 5 6 7 8 9 10 11 12

一个轮显插件的尝试、思考和扩展

写在前面 自己的一点想法 "解决一个问题,最重要的收获并不是得到的答案.而是在寻找答案的过程中,学到的其它东西和见识的延伸." ---<反正我从中学到不少东西> ”我敬你是条汉子!“ ---<论如何回答女朋友问为什么对她那么好> 希望能够把文章大致扫一遍,里面有一些有趣的demo哦......哒 效果见页面顶部 或者如下: 显示border 隐藏border 显示切换栏 隐藏切换栏 等等api见下面描述 //---------------初始化轮显的方法----

《前端圈技术论坛-腾讯互娱专场》观后感

11月22日,周六,天气晴朗,原计划今天和阿武去参加前端圈技术论坛深圳专场,可是我要加班,吃完午饭阿武发来一张现场图片,用的还是周四羽毛球赛的冠军奖品——一个手机鱼眼镜头拍摄的,同事阿王问我这是什么活动,得知我已报名后,当即让我放下工作赶过去参加,好在活动现场就在隔壁大楼C1-18F,于是才有了这篇观后感. 整体来说这次专场比上次的iweb峰会质量高一些,干货比较多.本次论坛主要内容有: 1.TGideas副总监PANTHER致辞 由于去的晚了点,没有赶上. 2.TGideas重构四组(重构工程

大三广工屌丝男实习逆袭

Advertisement 这个不是炫耀,是赤裸裸的卖广告.本人是广工topview团队的一员,今年topview团队暑假找实习的战绩是3个腾讯,2个阿里,2个金山(未完待续,说不定还有UC等其他公司).各位广工大一师弟师妹如果对topview团队有兴趣的可以联系我哦! Perface 打好广告后,说说自己吧!找实习的两个月让我明白了一些道理 1 有一个很高的奋斗目标可以让你的生活过的很充实. 经历: 之前学习是看一下书有时就想刷一下微博或者看下NBA等,但是自从进入了奋斗模式后就好像完全自动屏

傅里叶变换与小波分析

从毕设中期答辩以后,本人开始着力于信号处理方面知识的学习,这里面的玄机确实说不清道不明,剪不断理还乱. 在学习过程中,发现很多值得去探索和分析的地方,而且好多前辈都很无私的分享了. 愚目的很简单:就是想把这阶段所学的知识整理整理思路,希望能得到大神指点. 这阶段学习的思路:(希望今后能把这些板块都 补齐) - 傅里叶变换和小波分析 - 小波分析的应用 - EMD算法 - 图像识别 - 轴承故障诊断方法研究 - 声发射法AE - 负压波故障诊断 - 字典学习 傅里叶变换与小波分析 1.1傅里叶变换

屌丝男初中丰富的工作实践反击

Advertisement 这个不是炫耀.是赤裸裸的卖广告.本人是广工topview团队的一员.今年topview团队暑假找实习的战绩是3个腾讯,2个阿里,2个金山(未完待续,说不定还有UC等其它公司).各位广工大一师弟师妹假设对topview团队有兴趣的能够联系我哦! Perface 打好广告后.说说自己吧! 找实习的两个月让我明确了一些道理 1 有一个非常高的奋斗目标能够让你的生活过的非常充实. 经历: 之前学习是看一下书有时就想刷一下微博或者看下NBA等,可是自从进入了奋斗模式后就好像全然

2018-2019-2 20175204 张湲祯 实验三《敏捷开发与XP实践》实验报告

2018-2019-2-20175204 张湲祯 实验三 <敏捷开发与XP实践>实验报告 实验三 Java面向对象程序设计 一.实验内容: 1.XP基础 2.XP核心实践 3.相关工具 4.编码标准:在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能.提交截图,加上自己学号水印. 5.搭档代码检验:在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码