1 代码的坏味道

重构一书中提到了22种代码的坏味道,大致可以分为几类。

识别代码的坏味道,有助于发现代码的潜在问题,从而可以有的放矢的修改现有代码,使之不断完善。

1.1 Bloaters(臭鲱,暂译臭代码)

这种类型的味道意味着:代码、函数和类的问题没有立马凸显,但是随着代码不断改变,问题就会越来越明显。

包含五种:

1.1.1 Long Method(过长方法)

特征:

一个方法含有太多行代码。一般来说,任何方法超过10行时,你就可以考虑是不是过长了。函数中的代码行数原则上不要你超过100行。

            

问题的原因:

通常情况下,创建一个新方法的难度要大于添加功能到一个已存在的方法。大部分人都觉得:“我就添加这么两行代码,为此新建一个方法实在是小题大做了。”于是,张三加两行,李四加两行,王五加两行。。。方法日益庞大,最终烂的像一锅浆糊,再也没人能完全看懂了。于是大家就更不敢轻易动这个方法了,只能恶性循环的往其中添加代码。所以,如果你看到一个超过200行的方法,通常都是多个程序员东拼西凑出来的。

解决方法:

一个很好的技巧是:寻找注释。添加注释,一般有这么几个原因:代码逻辑较为晦涩或复杂;这段代码功能相对独立;特殊处理。 如果代码前方有一行注释,就是在提醒你:可以将这段代码替换成一个函数,而且可以在注释的基础上给这个函数命名。如果方法有一个描述恰当的名字,就不需要去看内部代码究竟是如何实现的。就算只有一行代码,如果它需要以注释来说明,那也值得将它提炼到独立函数中。

            

  • 为了给一个方法瘦身,可以使用 提炼方法(Extract Method)
  • 如果局部变量和参数干扰提炼方法,可以使用 以查询取代临时变量(Replace Temp with Query)引入参数对象(Introduce Parameter Object) 或 保持对象完整(Preserve Whole Object) 。
  • 如果前面两条没有帮助,可以通过 以函数对象取代函数(Replace Method with Method Object)尝试移动整个方法到一个独立的对象中。
  • 条件表达式和循环常常也是提炼的信号。对于条件表达式,可以使用 分解条件表达式(Decompose Conditional) 。至于循环,应该使用 提炼方法(Extract Method) 将循环和其内的代码提炼到独立函数中。

收获:

  • 在所有类型的面向对象代码中,方法比较短小精悍的类往往生命周期较长。一个方法越长,就越不容易理解和维护。
  • 此外,过长方法中往往含有难以发现的重复代码。

            

性能:

是否像许多人说的那样,增加方法的数量会影响性能?在几乎绝大多数情况下,这种影响是可以忽略不计,所以不用担心。 此外,现在有了清晰和易读的代码,在需要的时候,你将更容易找到真正有效的方法来重组代码和提高性能。

转载于:https://www.cnblogs.com/zjfjava/p/7109376.html

Refactoring之——代码的坏味道(一)过长方法相关推荐

  1. 代码的坏味道与重构技术

    一.前言 本文大部分内容.图片来自Martin Flower的<Refactoring>一书以及refactoringguru网站(一个很棒的网站),之前在博客发表过,这次属于整理后重新发 ...

  2. 22种代码的坏味道,一句话概括

    22种代码的坏味道,一句话概括: 如果一段代码是不稳定或者有一些潜在问题的,那么代码往往会包含一些明显的痕迹. 正如食物要腐坏之前,经常会发出一些异味一样. 我们管这些痕迹叫做"代码异味&q ...

  3. 【重构】 代码的坏味道总结 Bad Smell (一) (重复代码 | 过长函数 | 过大的类 | 过长参数列 | 发散式变化 | 霰弹式修改)

    膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 . 代码的坏味道就意味着需要重构, 对代码的坏味道了然于心是重构的比要前提; . 作者 : 万境绝尘 转载请注明出 ...

  4. 【重构之法】代码的坏味道

    代码的坏味道 坏味道意指代码中出现的可以被改进的地方.当你嗅到坏味道的时候,也就意味着重构的时机到了. 重构就是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修 ...

  5. 重构-改善既有的代码设计-------代码的坏味道

    重构-改善既有的代码设计 代码的坏味道 神秘命名(Mysterious Name) 给函数.变量.模块和类命名时,要使它能清晰地表明自己的功能和用法,使得写下的代码直观明了. 常用重构手法为重命名,包 ...

  6. Bad Smell (代码的坏味道)

    Bad Smell (代码的坏味道) 如果一段代码是不稳定或者有一些潜在问题的,那么代码往往会包含一些明显的痕迹. 正如食物要腐坏之前,经常会发出一些异味一样, 我们管这些痕迹叫做 "代码异 ...

  7. 读书笔记之《重构》第三章—代码的坏味道

    第三章 代码的坏味道 这一章告诉我们,什么样的代码需要去重构,该用什么方法.寻找代码的坏味道,就是从代码中找出特定的结构,这些结构指出重构的可能性.寻找这些结构,需要学会判断,判断一个类里面有多少实例 ...

  8. 重构笔记——代码的坏味道(上)

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42041757 在重构入门篇中,简单地介绍了重构的定义.为何 ...

  9. 《重构 改善既有代码的设计》之代码的坏味道

    1 简介 知道"如何"不代表知道"何时".决定何时重构.何时停止和知道重构机制如何运转一样重要. 从我们的经验来看,没有任何量度规矩比得上一个见识广博者的直觉. ...

最新文章

  1. 转载 详解go语言GC
  2. java学习--基础知识第六天--笔记
  3. 好用的记事本_推荐一款可设定定时提醒的电脑桌面悬挂记事本便签软件
  4. factorybean 代理类不能按照类型注入_《Spring入门经典》:使用Spring进行依赖注入
  5. 【datamining】OLTP,OLAP,维度数据库,事实表,维度表、星形和雪花模式、数据立方体、概念分层...
  6. 181026英语每日一句
  7. 使用鸿蒙原生做游戏适配问题
  8. jdk 配置出错could not open `C:\Java\jdk16\lib\amd64\jvm.cfg‘ 解决方案
  9. Win7浏览器老是自动弹出网页怎么解决?【系统天地】
  10. 快速免费对接快递鸟圆通快递单号查询api接口
  11. 黄反词测试,接口监控
  12. dongle 工具 蓝牙_bluetooth USB Dongle(蓝牙适配器)怎么用?
  13. Javascript变量、作用域与内存
  14. 面对勒索软件,除了交赎金,还能怎么办?——我们有11个建议给你
  15. 国际多币种移动平台:换汇+支付(Wise/Revolut)
  16. python获取系统时间为字符串_Python日期时间对象转换为字符串的实例
  17. Windows电脑SMB共享设置方法
  18. python安装psutil_psutil
  19. 给eclipse 添加字体
  20. Flash Builder 4注册机下载地址

热门文章

  1. poj1860(spfa判正环)
  2. 用Python写一个简单的监控系统
  3. IM系统中聊天记录模块的设计与实现
  4. winlogon病毒清除
  5. 看到这个我冷汗直冒,还好不是指我……
  6. Linux删除带空格的文件 删除最后一个后缀名
  7. openwrt顶层Makefile分析-转
  8. 实用Python之字符串长度计算
  9. Java进阶知识点:协变与逆变
  10. nginx历史版本下载链接