公司自己做网站多少费用,阿里云域名注册备案,怎样维护网站建设,贵州省建设厅网站首页目录
一.重构是什么(what)
1.重构的本质
2.重构≠性能优化
二.重构的目的(why)
1.去写好的代码
2.去写更灵活的代码
三.重构的时机(when and where)
1.何时重构
2.何时不重构
四.重构的方法(how)
1.重构关键核心
2.重构方法
3.重构工具
小结 一.重构是什么(what)…目录
一.重构是什么(what)
1.重构的本质
2.重构≠性能优化
二.重构的目的(why)
1.去写好的代码
2.去写更灵活的代码
三.重构的时机(when and where)
1.何时重构
2.何时不重构
四.重构的方法(how)
1.重构关键核心
2.重构方法
3.重构工具
小结 一.重构是什么(what)
重构(refactoring):在不改变代码外在行为的前提下对代码作出修改以改进程序的内部结构。
1.重构的本质
本质上说重构就是在代码写好之后改进他的设计
传统开发过程中是先设计再开发更像是瀑布开发模式。
对重构来说更像是敏捷开发模式是一个设计与开发小步迭代不断持续优化的过程。
2.重构≠性能优化
相似之处:
二者都需要修改代码;二者都不会改变程序整体功能。
差异之处:
重构目的是让代码更容易理解和便于修改重构后程序可能会运行的更快或者更慢;性能优化只关心程序运行的更快不关心代码的结构和可读性问题。 二.重构的目的(why)
目的:改善代码质量。
1.去写好的代码
什么是好的代码
代码质量优劣并无绝对的判断标准但是会有一些行业共同认可的标准。因为对于计算机来说只要代码能运行编译器不会在乎代码好不好看。但是代码是在实际开发应用中会涉及到修改交接是要给程序员和Leader去阅读的一旦涉及到人就会出现了代码的可读性问题。 好的代码的检验标准就是人们是否能轻而易举地修改它。 好代码应该直截了当有人需要修改代码时应该能轻而易举的找到修改点应该能更快速做出修改而不引入其他错误。 傻瓜都能写出计算机可以理解的代码唯有能写出人类容易理解的代码才是优秀的程序员。 让自己的代码更健康而不是更完美
2.去写更灵活的代码
谁也无法预测未来的事。
对于一个团队来说应对未来的发展以及团队人员的变更或者领导有了新的想法每当遇到如此事件我们的代码就要遭罪了。
灵活性可以更变通的应对不可预知的问题。
重构后的代码结构会更清晰可以考虑预留一些功能接口这样等到一个新同事拿到项目工程时他会感谢上一位老哥的。 三.重构的时机(when and where)
1.何时重构
两种情况:开发过程中和开发完成后
重构的最佳时机就是在添加新功能之前。
最常遇到的情况是待添加的新的功能也会用到之前使用的代码和数据结构为了避免大量代码复制粘贴消除重复代码所以不要一直埋头苦干而是要停下来多思考。
重构和添加新功能不能同时进行
添加新功能时就不应该修改既有代码只管添加新功能;重构时就不再添加新功能只管调整代码结构。同时进行二者会很混乱。
当代码读起来不明就里时
一旦需要思考“这段代码到底在做什么”就要自问一下“能不能重构这段代码令其一目了然”。
有更合适的优化空间
此时代码可能能够被理解但是写的很复杂或者有更好的优化这种情况可以参考一些常见的优化方法以及需要根据长期的开发项目经验来实施。
在开发项目管理中约定重构时机
通常在较为严谨的项目中每一步都有自己的流程和时间限制那么可以在项目管理中提前设置一些重构节点有计划的安排重构工作或者专门安排团队来做定期的code review也是一个共同讨论重构的好时机。
2.何时不重构
不是所有情况都需要重构的没必要为了重构而重构以下情况就可以不考虑重构。 如果代码本身设计合理质量过关维护成本低团队有着一套很稳定的管理流程那么只要保持这样的状态就好按照规则做好自己的事; 如果代码太烂了并且耦合程度太高重构的成本重写的成本那么考虑升版代码推倒重新设计; 如果代码本身已经运行了很多年虽然凌乱但是不影响运行可以考虑把一些凌乱的代码打包隐藏到一个API中以后不用管他即可;
重构的时机在实际工作中要取决于整个项目的安排或者对后续维护运行的影响以及重构工作的人力成本和时间成本。从大领导的角度来说通常只会关心交付的内容能不能满足合同要求能不能结项结款。但是实际上从维护公司长期发展和培养个人程序开发优良喜欢来说重构是领导层和基层人员都要时刻去考虑的。 四.重构的方法(how)
1.重构关键核心
开展高效有序的重构关键心得是:小步快跑保持代码处于永远可以工作的状态小步修改积累起来也能大大改善系统的设计。
小步快跑:无论每次重构多么简单重构后立刻运行测试修改完成后提交版本控制便于回滚。
2.重构方法
这部分内容是针对实际代码如何修改的实践方法内容比较多我会持续更新并通过单独链接的方式呈现参考书中的js代码我会做改成C或者Python来重现请根据需要自行跳转查看
3.重构工具
重构除了我们手动的修改代码例如使用查找/替换方式去修改名字目前的IDE中都自带一些自动化重构工具比如JetBrains的IntelliJ IDEA还有Eclipse或者是微软的Visual Studio都或多或少具备重构功能有了这些工具我们可以更好的更方便的进行重构但是重构的思路还是要人来自己设计和掌握。 小结 “重构的意义不在于把代码打磨的闪闪发光而是纯粹的要从经济角度考量” 对于软件开发工作者来说重构在实际工作中是由经济利益驱动的如果只是做一锤子买卖没人愿意去干重构这件事;或者本身不是你写的代码你的领导突然让你把他重构又不会额外给你什么好处;只有在跟你涉及利益相关时比如你写的代码你后面还要维护它或者你的团队在开发时就要求了一些管理流程或者代码由多人协作每个人都要清理出自己的接口以防别人代码影响自己。
在学习或科研中也是一样的代码更重要的是得到数据结果或者分析结果你的论文中不会粘贴大量的代码。
所以不同的岗位不同的情况所要进行重构工作这件事的考量不同但是重构也是一种习惯和素养如果他成为你开发的一种良好习惯你总有一天会从中受益的毕竟谁都喜欢和能写出这样代码的人打交道养成习惯学到手用不用在哪里用到时候再说。
参考书籍: 《重构:改善既有代码的设计(第2版)》 该文是参考了上面的内容是一篇读书笔记及总结感悟该书的参考语言是JavaScript作者会用代码案例贯穿讲解会涉及一些语法上的优化有JS基础知识会更好理解。
本文不得用以任何商业活动仅供学习使用。