前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重构 — 代码的坏味道(二)

重构 — 代码的坏味道(二)

作者头像
用户9914333
发布2022-07-21 19:40:16
3260
发布2022-07-21 19:40:16
举报
文章被收录于专栏:bug收集bug收集

11. 循环语句。Loops

  • 使用管道操作,如filter/map等,代替循环语句。
  • 好处在于使得我们更快地看清被处理的元素以及处理它们的动作。
12. 冗赘的元素 Lazy Element
  • 指的是,多层不必要的包装。
  • 如:方法a中包的是b,b包的是c,c包的是d。但是bc只是基于某种考虑的纯粹包装,而从未有其他变化,这时可以让a直接包d,bc就去掉吧。
13. 夸夸其谈通用性 Speculative Generality
  • 指的是,过度设计,假象的灵活机制。从未被用到的。
14. 临时字段 Temporary Field
  • 一个类内,应该具备统一的逻辑体现。
  • 举例:class Letter{ a. b. c. 牛 d. e. }
15. 过长的消息链 Message Chains
  • a想获得f,过程是:c = b.getC(),d = c.getD(),e = d.getE(),f=e.getF();
  • 类似一个导航链。
16. 中间人Middle Man
  • 对象的基本特征之一就是封装-对外部世界隐藏其内部细节。封装往往伴随着委托。
  • 过度委托,举例:a使用b的b1 b2 b3三个函数,但是b1 b2 b3这三个函数都是c的c1 c2 c3。那么就把b这个中间人去掉,直接a使用c1 c2 c3
17. 内幕交易 Insider Trading
  • 避免模块间的私下交流,把模块间的交流放到明面上,统一交流方式,约定都使用这些统一的方式。
18. 过大的类 Large Class
  • 让类业务功能单一,避免一个类干很多事情。
19. 异曲同工的类 Alternative Classes with Different Interfaces
20. 纯数据类 Data Class
  • 一种情况是,这真的是纯数据类,存放数据的容器,不会改变类的变量值。这种情况没有问题。
  • 另一种情况是,类内有一些字段,以及访问这些字段的函数。但是在很多其他地方频繁的对该类的字段进行访问修改。那么可以考虑,将这些频繁的行为搬移到类的内部。也就是说,把处理数据的行为从客户端搬移到纯数据类里来。
21. 被拒绝的遗赠 Refused Bequest
  • 指的是,子类只想继承超类的部分字段和函数,其他的拒绝使用。这意味着继承体系设计错误。超类中的字段函数应该是子类的必备数据。
  • 继承体系设计时,应该是真是一个体系。而不应因为多个并行的类有某些行为相像的函数,而抽取超类。比如猪和牛都有四条腿和一个尾巴,但不应该抽取一个只有四条腿和一个尾巴的超类,猪牛不是一个体系的。

22. 注释 Comments

  • 一段又长又臭的代码,无法自解释,只能靠注释解释其含义。这不是注释原本的意义。
  • 注释可以用来记述将来的打算之处,标记并无十足把握的区域,或是写下“为什么做某某某事”,这类信息可以帮助将来的修改者,尤其是那些健忘的家伙
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bug收集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 12. 冗赘的元素 Lazy Element
  • 13. 夸夸其谈通用性 Speculative Generality
  • 14. 临时字段 Temporary Field
  • 15. 过长的消息链 Message Chains
  • 16. 中间人Middle Man
  • 17. 内幕交易 Insider Trading
  • 18. 过大的类 Large Class
  • 19. 异曲同工的类 Alternative Classes with Different Interfaces
  • 20. 纯数据类 Data Class
  • 21. 被拒绝的遗赠 Refused Bequest
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档