22种代码的坏味道,一句话概括:
如果一段代码是不稳定或者有一些潜在问题的,那么代码往往会包含一些明显的痕迹。
正如食物要腐坏之前,经常会发出一些异味一样。
我们管这些痕迹叫做“代码异味”。
参考资料:
http://blog.csdn.net/sulliy/article/details/6635596
http://sourcemaking.com/refactoring/bad-smells-in-code
  • Code smells
  • Duplicated Code --------(重复代码)难维护。

[解决方法]:提取公共函数。

  • Long Method ------------(函数长)难理解。

[解决方法]:拆分成若干函数。

  • Large Class ------------(类大)难理解。

[解决方法]:拆分成若干类。

  • Long Parameter List ----(参数多)难用,难理解。
  • [解决方法]:将参数封装成结构或者类。
  • Divergent Change -------(万能类)发散试修改,改好多需求,都会动他。

[解决方法]:拆,将总是一起变化的东西放在一块儿。

  • Shotgun Surgery --------(天女散花的逻辑)散弹试修改,改某个需求的时候,要改很多类。

[解决方法]:将各个修改点,集中起来,抽象成一个新类。

  • Feature Envy -----------(红杏出墙的函数)使用了大量其他类的成员

[解决方法]:将这个函数挪到那个类里面。

  • Data Clumps ------------(数据团)常一起出现的一坨数据。

[解决方法]:他们那么有基情,就在一起吧,给他们一个新的类。

  • Primitive Obsession ----(偏爱基本类型)热衷于使用int,long,String等基本类型。

[解决方法]:反复出现的一组参数,有关联的多个数组换成类吧。

  • Switch Statements ------(switch语句)

[解决方法]:state/strategy 或者只是简单的多态。

  • Parallel Inheritance Hierarchies ---------------(平行继承)增加A类的子类ax,B类也需要相应的增加一个bx。

[解决方法]:应该有一个类是可以去掉继承关系的。

  • Lazy Class -------------------------------------(冗赘类)如果他不干活了,炒掉他吧。

[解决方法]:把这些不再重要的类里面的逻辑,合并到相关类,删掉旧的。

  • Speculative Generality -------------------------(夸夸其谈未来性)

[解决方法]:删掉

  • Temporary Field --------------------------------(临时字段)仅在特定环境下使用的变量

[解决方法]:将这些临时变量集中到一个新类中管理。

  • Message Chains ---------------------------------(消息链)过度耦合的才是坏的。

[解决方法]:拆函数或者移动函数。

  • Middle Man -------------------------------------(中介)大部分都交给中介来处理了。

[解决方法]:用继承替代委托。

  • Inappropriate Intimacy -------------------------(太亲密)两个类彼此使用对方的私有的东西。

[解决方法]:划清界限拆散,或合并,或改成单项联系。

  • Alternative Classes with Different Interfaces --(相似的类,有不同接口)

[解决方法]:重命名,移动函数,或抽象子类。

  • Incomplete Library Class -----------------------(不完善的类库)

[解决方法]:包一层函数或包成新的类。

  • Data Class -------------(纯数据类)类很简单,仅有公共成员变量,或简单操作函数。

[解决方法]:将相关操作封装进去,减少public成员变量。

  • Refused Bequest --------(继承过多)父类里面方法很多,子类只用有限几个。

[解决方法]:用代理替代继承关系。

  • Comments ---------------(太多注释)这里指代码太难懂了,不得不用注释解释。

[解决方法]:避免用注释解释代码,而是说明代码的目的,背景等。好代码会说话。

22种代码的坏味道,一句话概括相关推荐

  1. 21 种代码的坏味道

    1.Duplicated Code(重复的代码) 臭味行列中首当其冲的就是Duplicated Code.如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好. ...

  2. 21种代码的“坏味道”

    1.Duplicated Code(代码重复) 代码重复几乎是最常见的异味了.他也是Refactoring 的主要目标之一.代码重复往往来自于copy-and-paste 的编程风格.与他相对应OAO ...

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

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

  4. Refactoring之——代码的坏味道(一)过长方法

    1 代码的坏味道 重构一书中提到了22种代码的坏味道,大致可以分为几类. 识别代码的坏味道,有助于发现代码的潜在问题,从而可以有的放矢的修改现有代码,使之不断完善. 1.1 Bloaters(臭鲱,暂 ...

  5. 22种代码坏味道及重构手段

    为什么80%的码农都做不了架构师?>>>    思维导图 引用 22种代码味道(Martin Fowler与Kent Beck) 代码味道及重构手段 参考 <重构 改善既有代码 ...

  6. 22种代码味道(Martin Fowler与Kent Beck)

    Martin Fowler在Refactoring: Improving the Design of Existing Code(中译名:<重构--改善既有代码的设计>)一书中与Kent ...

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

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

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

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

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

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

最新文章

  1. 详解Redis分布式锁
  2. 让页面只能在微信浏览器里访问
  3. Android短信拦截
  4. IIS问题:Server Application Error 的解决
  5. 改变dom样式的方法
  6. 一次解决Linux内核内存泄漏实战全过程
  7. [Python3] 010 字符串:给你们看看我的内置方法 第二弹
  8. NEON码农指导 Chapter 3 : NEON Instruction Set Architecture
  9. 联想微型计算机ai0,联想baby AI
  10. CoDeSys开发经验总结
  11. Vue 的属性、方法和生命周期
  12. 深入认识敏捷开发和面向对象
  13. 计算机网络应用大专,计算机网络应用专业
  14. Android VideoView播放网络视频简介
  15. 绘画系统-MATLAB版
  16. TPS74512PQWDRVRQ1
  17. 如何用乌班图(Ubuntu)制作 linux 系统 U盘启动盘
  18. macbook移动文件
  19. 计算机PD是什么职业,什么是pd控制器
  20. EM@函数变换(几何变换)@函数图像伸缩偏移@奇偶性@周期性

热门文章

  1. windows下pycocotools的安装及避坑
  2. c#使用msiexec静默安装IIS
  3. 电脑图标设置。(此电脑,控制面板我的图标呢?)
  4. Spark-----Spark 与 Hadoop 对比,Spark 集群搭建与示例运行,RDD算子简单入门
  5. 每个程序员都该有个自己的博客,分享我的四种博客搭建教程!
  6. canvas实现分散对齐
  7. oracle sequence sql server,在SQLServer中实现ORACLE的Sequence
  8. yealink 电话 multicast 配置
  9. “管理业务全在线”,YonSuite实力演绎成长型企业“云上狂欢”
  10. 打印一只Nyan Cat(彩虹猫)(C++)3.1[多色版]+[修改版]