介绍
我们平时在开发中遇到最多的不是开发新项目,而是对现有的项目进行修改和添加新特性。所以这次着重谈谈软件修改。
目录索引
# 添加新特性,修正bug;
# 改善设计;
# 优化资源使用;
# 考虑危险性
我们在平时维护现有系统的时候,我们不难发现产品比较喜欢添加行为,而不是改变或移除原本他们所依赖的行为。
对于我们平时如何区分是修正bug还是添加新特性呢?这个是角度问题,是产品与技术人员的较量问题。
比如:产品想把logo,从左边移到右边,而且还要在右边移动。
那么从产品的角度是修复bug,而从我们的角度是添加新特性。
产品从不管我们为此不得不从头开始做一些新的工作的事实。——主观看法的差异而已。
我们在平时一定要做到bug修正和添加新特性必须分开记录和解决,这便于我们日后的维护。——一般我们公司是使用jira做这些记录。
改善设计的目的是改变既有软件的结构和组织,以令其更易于维护。
改善设计我们不得不提重构,重构是不改变软件行为的前提下改善其设计的举动。我们要保证结构的改变不会影响既有的行为,这我们通常需要编写测试代码。——每一小步都小心验证其行为不会改变。
优化与重构的区别是目的不同。对于重构来说,是为了易于维护而做的程序结构的调整。而对于优化来说,是为了提高性能(如时间或内存)。
有两个词大家需要斟酌一下,“清理”和“整理”。清理有清除整理的意思,而“整理”没有清除的意思。我们在重构或优化的时候,注意这两个词的区别。——为了与其他人沟通更加准确些。
在我们需要作出修改并保持行为时,往往伴随着相当大的风险。
思考方式:
在我们修改代码的时候,你脑子里是否想到以下问题。——这也是希望大家在修改代码的时候,自问一下。
1、我要进行哪些修改?
2、如何判断已经正确的完成了修改?
3、如何得知没有破坏任何既有的行为?
传统方法
我们经常使用的方式:当需求下来了,我们的第一反应是在现有的类或方法上添加和修改,而不是重新建个类或方法。
这样使用是因为费力少,更安全。
而产生的后果是既有的类和方法越来越大,越来越难理解。而且我们不得不承认,我们对代码会越来越生疏,以后再修改这个地方,从内心就会产生恐惧感,总惧怕这个地方再进行修改从而导致系统结构日益糟糕。
比较先进方法
1、努力的去做修改,做好文档(主要是流程图)、注释。——我个人非常喜欢某个方法重写,我的做法是看是不是能抽出类或者方法来,然后重写方法。这样做的目的(1)我更加了解系统。(2)能增强我的代码编写能力。
2、雇佣更多员工,这样我们就有更多的时间进行系统分析和仔细审查所有代码。
总结
以上是对软件修改整个过程的理解,若有误,欢迎大家拍砖。
参考文献《修改代码的艺术》
推荐