读书笔记:重构之重构原则

重构(名词):对软件内部结构的一种调整,目的是在不改变[软件之可察行为]前提下,提高其可理解性,降低其修改成本。

重构(动词):使用一系列重构法则(手法),在不改变[软件之可察行为]前提下,调整其结构。

软件可察行为:任何用户,不论是最终用户或程序员,都不知道已有的东西发生变化,包括性能。性能往往与重构背道而驰,多数情况下,为了性能会写出一些难于理解的代码,但不得不如此来提高性能。

总结关键字:内部结构调整,重构手法,不变可察,降低维护成本,提高可理解性。

Why 重构?

1.改进软件设计:
代码的流失性是积累的,随着功能增多,程序的原有结构就越难维持,重构就是去维护原有形态,改进设计的一个重要方向[消除重复代码]。

2.使软件更容易理解:
方便后来人或者自己再加或者改功能时,更迅速的完成需求。

3.帮助我们找BUG:
这一点是上一点的进阶篇,重构使我们深度理解代码,从而找到BUG。

4.提高编程速度:
维护代码的原有结构、良好的设计,类似“磨刀不误砍柴工”的意思,将时间都聚焦在新功能的开发上。

When 重构?

1.添加功能时一并重构:
①修改代码时,是否能修改代码使我或者其他人以后能够加速理解代码。
②代码的设计无法帮助我轻松添加新特性,即使维护性差的时候。

2.修BUG时一并重构:
代码不够清晰,不够清晰到让你一目了然发现BUG。

3.复审代码时一并重构(code reviews):
复审代码时,可以从老程序员那儿快速获取更多经验,更好修改代码结构,易于理解,维护等。

重构的难题:

1.数据库:
此处我没理解透彻,关于数据库编程知之甚少,。大概的意思就是降低程序和表的耦合,在对象模型和数据模型中间插入一个分隔层。

2.修改接口:
①重命名接口名时,如果能获取所有调用方式,当然可以很快速的重命名接口名,但是找不玩怎么办,比如反射等调用方式就会受到影响。
②旧接口调用新接口,不要拷贝函数实现码(会出现大量的重复代码),想要修改函数名时,请留下旧函数(C#的Attribute,java的Deprecation)。

3.难以通过重构完成设计改动:
难以预估重构难度,重构后无法排除设计错误,笔者经历的项目不多只能总结出大概这个意思。

4.何时不该重构:
例如重写>重构效率时。
重写:现有代码根本不能正常运作,根本不能稳定运行。
重构:代码必须在大部分情况下运行正常。

重构与设计

重构与设计互补 即重构时也要满足设计模式的5大原则
1.重构时满足设计原则。
2.重构前要事先设计,不一定是最优解,但一定是合理解。

猜你喜欢

转载自blog.csdn.net/weixin_43381316/article/details/125141226