<ol><li>你不能重写系统。因为重写系统你还会做错6点,虽然可能是不同的6点。</li><li>你不能在增加系统功能的同时修正这6点,因为增加一个功能,就会再增加比如说5点要考虑的东西,这个过程中你又会做错3点。</li><li>当你不增加新功能,又试图修复这6点中的某一个或者几个,这个过程就是『重构』。</li><li>重构并不能保证不会毁掉你原本做对的4点,但是你起码可以肯定这个错误是因为你的重构造成的而不是别的原因(比如第2种做法里新增加的那5点)。而且这也是鼓励你在第3种做法里尽量只修正一个错误。</li><li>你永远达不到完全做对10点,即使你有无限的时间重构。而实际上你的重构永远在和添加新功能竞争资源。</li><li>由于第5点,你不要无缘无故的重构,除非需要增加新功能。但是由于第4点,又不能和增加新功能同时进行。</li></ol>
当人类文明的代码积累到一定程度,我们就不再需要写新代码(或者只需要写胶水代码即可)。那时的程序员会被称为考古程序员(因为总是在重构已有代码)。参考《天渊》。
一、指代不同
1、数据库重组:将数据库的相关信息重新组织。
2、数据库重构:对表结构、数据、存储过程和触发器的小小改动就能在很大程度上改进数据库的设计,同时又不改变语义。
二、特点不同
1、数据库重组:数据库使用较长一段时间后,因为一些增,删,改等 *** 作,使得数据的分布索引及相关数据会变得比较凌乱,从而影响数据库的效率。
2、数据库重构:包括结构、数据质量、参照完整性、架构、方法的重构。
三、作用不同
1、数据库重组:是比较底层且比较费时的 *** 作,在重组时会停止前端业务,把数据库里表的数据放到磁盘的空闲空间上。删除原有的表或索引,重建空的表或索引后,再把数据导入新表或索引中。
2、数据库重构:能帮助软件专业人士改进系统设计及其可维护性、可扩展性和性能。
参考资料来源:百度百科-数据库重组
参考资料来源:百度百科-数据库重构
有些应用软件或者是应用程序在经过长期的运行和使用之后是需要进行版本更替以及升级维护的,而其中重构就是一个比较常见的方法,今天我们就一起来了解一下,通过软件重构我们能够学到哪些内容。
了解流程
先我们需要了解以前的系统是如何工作的。从编译、测试和部署开始,直到收到用户请求,我们需要知道整个过程的工作原理。
因为这是一个核心的服务,而我刚刚来这里一年,我真的不知道它是如何运作的,尤其是多年来整个系统添加了很多额外的功能和补丁,很难通过阅读代码来了解它。所以,我们需要了解流程和规则,然后基于这些流程和规则构建新的流程和规则。
设计和讨论
我们之所以要重构这个服务,是因为当我们要添加新功能时,之前系统的代码架构无法很好地扩展。如果要在未来开发新功能会非常痛苦,因为我们不得不重构很多东西。
所以我们真正需要的是修复架构。设计一个新的架构真的很难。我们需要问自己很多问题,比如:“这样做会怎样?”、“为什么要这样?”、“为什么不是这样?”我们希望新架构能够解决“未来”的问题,并提供向后兼容性。为此,我们进行了大约一个月的讨论,针对每个大功能进行了技术栈和流程方面的讨论。
了解基础
在将流程和设计转换为代码时,我意识到我们必须对基础有一个真正的了解。一开始,我并没有真正理解高阶函数的工作原理。在阅读代码时感到很困惑,怎么总是一个函数接收一个函数作为参数然后再返回一个函数呢?不过要感谢谷歌,我现在终于明白了。
永远不要忽略了测试
在重新构建这个服务时,我们至少进行了三次测试,然后才发布到生产环境中:单元测试、集成测试和负载测试。
在所有这些类型的测试中,单元测试是很小的测试。IT培训http://www.kmbdqn.cn/发现有些人似乎低估了单元测试的重要性,因为它只是一个单元,一个小功能。但是,在重建这个新服务时,我体会到了单元测试的重要性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)