我是靠谱客的博主 认真月光,最近开发中收集的这篇文章主要介绍《重构-改善既有代码的设计》代码中的坏味道,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章内容和思路来自《重构-改善既有代码的设计》

1. 神秘命名:代码整洁最重要的一环就是好的名字,所以我们需要深思熟虑如何给函数、模块、变量和类命名;如果你想不到一个好的名字,说明背后很可能隐藏着更深的设计问题

2. 重复代码:如果你在一个以上的地点看到相同的代码结构,那么可以肯定:设法将它们合而为一,程序会变得更好

3. 过长函数:早在编程的洪荒年代,程序员们就已经认识到:函数越长,越难理解;据我们的经验,活的最长、最好的程序,其中的函数都比较短

4. 过长参数列表:过长的参数列表本身也经常令人困惑

5. 全局变量:全局数据的问题在于,从代码库的任何一个角落都可以修改它,而且没有任何机制可以探测出到底哪段代码做出了修改

6. 可变数据:对数据的修改经常导致出乎意料的结果和难以发现的bug。我在一处更新数据,却没有意识到软件中的另一处期望着完全不同的数据(1> 确保对数据的修改只通过几个特定的函数进行 2>将其拆分成不同用处的多个变量 3>没有必要修改的变量移除设值函数)

7. 发散式变化:我们希望我们的软件更容易被修改,一旦需要修改,我们仅需要跳转到某处做一次修改即可;如果我们变更需求需要同时修改多个地方的函数,这就是发散式变化的征兆

8. 散弹式修改:如果需求变更需要在不同的类里面做出小的修改

9. 依恋情结:一个函数跟另一个模块中的函数或者数据交流格外频繁,远胜于在自己所处模块内部的交流

10. 数据泥团:在多个不同的地方看到相同的三四项数据:两个类中相同的字段、许多函数签名中相同的参数。这些总是绑在一起出现的数据真应该拥有属于他们自己的对象

11. 基本类型偏执:很多程序员不愿意创建对自己的问题域有用的基本类型,如钱、坐标、范围等

12. 重复的switch:任何switch都应该被多态取代掉

13. 循环语句:一些高阶语言提供管道的方式取代循环(一些语言特性不支持可以忽略本条)

14. 冗赘的元素:程序元素(类和函数)能给代码增加结构,从而支持变化、促进复用或者哪怕只是提供更好的名字,但有时我们真的不需要这层额外的结构。可能有的函数它的名字就跟实现的代码一模一样;也可能某一个类根本就是一个函数,这种情况下请让这样的程序结果庄严赴义吧

15. 夸夸其谈通用性:“奥,我们总有一天需要做这种事”,以各种各样的钩子和特殊情况来处理一些非必要的事情

16. 临时字段:有时会看到这样的类:其内部某个字段仅为某种特定情况而设。这样的代码让人不易理解,因为你通常认为对象在所有时候都需要它的所有字段。在字段未被使用的情况下猜测当初设值它的目的,会让你发疯

17. 过长的消息链:用户向一个对象请求另一个对象,然后再向后者请求另一个对象,然后再请求另一个对象,采用这种方式意味着客户端代码将与查找过程中的导航结果紧密耦合。一旦对象间的关系发生任何变化,客户端就不得不做出相应的修改

18. 中间人:对象的基本特征之一就是封装,封装往往伴随着委托。比如,你问主管是否有时间参加一个会议,他就把这个消息委托给他的记事本,然后才能回答你。很好,你没有必要知道使用的传统笔记本或是电子笔记本。但是人们可能过度使用委托,你也许会看到某个类有一半的函数都委托给了其他类,这样就是过度运用中间人

19. 内幕交易:软件开发者喜欢在模块间建起高墙,极其反感在模块间大量交换数据,因为这会增加模块间的耦合。实际情况下,一定的数据交换不可避免,但我们必须尽量减少这种情况,并把这种交换摆到明面上来(eg,如果两个模块有相同的兴趣可以尝试新建一个模块,把共用的数据放到一个管理良好的地方)

20. 过大的类:如果利用单个的类做太多的事情,其内部往往就会出现太多字段。一旦如此,重复代码就会接踵而至

21. 异曲同工的类:使用类的好处之一就在于可以替换:今天用这个类,未来可以换成另外一个类。但只有当两个类的接口一致的情况下才能做这种替换,如果接口不一致可以想办法让其一致

22. 纯数据类:除了数据的读写一无长物,纯数据类的出现往往意味着行为被放到了错误的地方。也就是说,只要把处理数据的行为从客户端搬移到纯数据类中情况将大为好转。但也有例外的情况,一个最好的例外情况就是,纯数据类记录的对象被用作函数调用结果的返回

23. 被拒绝的遗赠:子类应该继承超类的函数和数据。但如果他们不想或者不需要继承,按传统的说法,这就意味着继承体系设计错误。你需要为这个子类新建一个兄弟类,把用不到的函数下推给那个兄弟。这样一来,超类就只持有所有子类共享的东西

24. 注释:当你感觉需要撰写注释时,请先尝试重构

最后

以上就是认真月光为你收集整理的《重构-改善既有代码的设计》代码中的坏味道的全部内容,希望文章能够帮你解决《重构-改善既有代码的设计》代码中的坏味道所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部