"编码中的21种代码坏味道" 在设计和编码中,存在着21种代码坏味道,这些坏味道可能会给后续维护带来极大影响。如果我们能够识别和消除这些坏味道,那么我们的代码将变得更加简洁、可维护和可扩展。 Duplicated Code(重复的代码) Duplicated Code是代码坏味道中最常见的一种。它指的是在不同的地点出现相同的程序结构。如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。最单纯的 Duplicated Code 就是「同一个 class 内的两个函数含有相同表达式(expression)」。这时候你需要做的就是采用 Extract Method(110)提炼出重复的代码,然后让这两个地点都调用被提炼出来的那一段代码。 Long Method(过长函数) 拥有「短函数」(short methods)的对象会活得比较好、比较长。不熟悉面向对象技术的人,常常觉得对象程序中只有无穷无尽的 delegation(委托),根本没有进行任何计算。和此类程序共同生活数年之后,你才会知道,这些小小函数有多大价值。「间接层」所能带来的全部利益 - 解释能力、共享能力、选择能力 - 都是由小型函数支持的。 在编写代码时,我们遵循这样一条原则:每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途(而非实现手法)命名。我们可以对一组或甚至短短一行代码做这件事。哪怕替换后的函数调用动作比函数自身还长,只要函数名称能够解释其用途,我们也该毫不犹豫地那么做。 Extract Method(110) Extract Method 是一种常用的重构方法,它可以将重复的代码提炼出来形成一个新函数。如果函数内有大量的参数和临时变量,它们会对你的函数提炼形成阻碍。如果你尝试运用 Extract Method(110),最终就会把许多这些参数和临时变量当做参数,传递给被提炼出来的新函数,导致可读性几乎没有任何提升。 Replace Temp with Query(120) Replace Temp with Query 是一种可以消除临时变量的方法。如果你已经使用 Extract Method(110)提炼出了新函数,但仍然有太多临时变量和参数,那就可以运用 Replace Temp with Query(120)来消除这些暂时元素。 Introduce Parameter Object(295)和 Preserve Whole Object(288) Introduce Parameter Object(295)和 Preserve Whole Object(288)可以将过长的参数列变得更简洁一些。如果你已经使用 Extract Method(110)和 Replace Temp with Query(120),仍然有太多临时变量和参数,那就可以使用 Introduce Parameter Object(295)和 Preserve Whole Object(288)来简化参数列。 Replace Method with Method Object(135) Replace Method with Method Object 是一种可以将长函数分解成多个小函数的方法。如果你已经使用了 Extract Method(110)、Replace Temp with Query(120)和 Introduce Parameter Object(295)等方法,但仍然有太多临时变量和参数,那就可以使用 Replace Method with Method Object(135)来将长函数分解成多个小函数。 以上是编码中的21种代码坏味道中的两个典型例子。通过对这些坏味道的识别和消除,我们可以编写出更加简洁、可维护和可扩展的代码。
剩余8页未读,继续阅读
- adgjlmbcz2015-11-18描述很简单,概括性很强,不是特别的具体
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Go和React的高质量企业微信私域流量管理系统 。遵守Apache2.0协议,全网唯一免费商用。企业微信、私域流量、SCRM。详细文档+优秀项目+全部资料.zip
- 基于Go和React的企业微信的开源 SCRM 系统。企微,个微,微信,聚合聊天,自动回复,加好友。详细文档+优秀项目+全部资料.zip
- 基于go语言的搜索引擎,信息检索系统详细文档+优秀项目+全部资料.zip
- 基于Go语言,Beego框架开发的简单的文章发布管理系统。详细文档+优秀项目+全部资料.zip
- 基于Go语言的轻量级高性能的分布式日志系统详细文档+优秀项目+全部资料.zip
- 基于go语言简单的用户管理系统详细文档+优秀项目+全部资料.zip
- 基于Go语言的一个秒杀系统详细文档+优秀项目+全部资料.zip
- 基于Go语言的一个简易blog系统详细文档+优秀项目+全部资料.zip
- 基于Go语言开发,具备高安全性、高性能和易扩展性的企业级内容管理系统,详细文档+优秀项目+全部资料.zip
- 基于Go语言实现的单点登录系统详细文档+优秀项目+全部资料.zip
- 基于Go语言实现的微服务电商系统详细文档+优秀项目+全部资料.zip
- 基于python和sql server2014做的商品学生信息管理系统,有界面,利用的sql server数据库详细文档+优秀项目+全部资料.zip
- 基于OWTP协议库,封装所有与openw-server钱包服务API交互方法。用于集成到go语言开发下的应用方系统。详细文档+优秀项目+全部资料.zip
- 基于Quasar和Go语言的功能全面的管理系统详细文档+优秀项目+全部资料.zip
- 基于SpringBoot 开发的员工的季度绩效考核系统详细文档+优秀项目+全部资料.zip
- 四足机器人技术发展及其应用场景概述