1。Duplicated Code

代码重复几乎是最常见的异味了。他也是Refactoring的主要目标之一。代码重复往往来自于copy-and-paste的编程风格。与他相对应OAOO是一个好系统的重要标志。

2。Long method

它是传统结构化的“遗毒”。

一个方法应当具有自我独立的意图,不要把几个意图放在一起。

3。Large Class

大类就是你把太多的责任交给了一个类。这里的规则是One Class One Responsibility。

4。Divergent Change

一个类里面的内容变化率不同。

某些状态一个小时变一次,某些则几个月一年才变一次;某些状态因为这方面的原因发生变化,而另一些则因为其他方面的原因变一次。面向对象的抽象就是把相对不变的和相对变化相隔离。把问题变化的一方面和另一方面相隔离。这使得这些相对不变的可以重用。问题变化的每个方面都可以单独重用。

这种相异变化的共存使得重用非常困难。

5。Shotgun Surgery

这正好和上面相反。对系统一个地方的改变涉及到其他许多地方的相关改变。这些变化率和变化内容相似的状态和行为通常应当放在同一个类中。

6。Feature Envy

对象的目的就是封装状态以及与这些状态紧密相关的行为。

如果一个类的方法频繁用get 方法存取其他类的状态进行计算,那么你要考虑把行为移到涉及状态数目最多的那个类。

7。Data Clumps

某些数据通常像孩子一样成群玩耍:一起出现在很多类的成员变量中,一起出现在许多方法的参数中,这些数据或许应该自己独立形成对象。

8。Primitive Obsession

面向对象的新手通常习惯使用几个原始类型的数据来表示一个概念。譬如对于范围,他们会使用两个数字。对于Money,他们会用一个浮点数来表示。因为你没有使用对象来表达问题中存在的概念,这使得代码变的难以理解,解决问题的难度大大增加。

好的习惯是扩充语言所能提供原始类型,用小对象来表示范围、金额、转化率、邮政编码等等。

9。Switch Statement

基于常量的开关语句是OO 的大敌,你应当把他变为子类、state或strategy。

10。 Parallel Inheritance Hierarchies

并行的继承层次是shotgun surgery的特殊情况。

因为当你改变一个层次中的某一个类时,你必须同时改变另外一个层次的并行子类。

11。 Lazy Class

一个干活不多的类。类的维护需要额外的开销,如果一个类承担了太少的责任,应当消除它。

12。 Speculative Generality

一个类实现了从未用到的功能和通用性。

通常这样的类或方法唯一的用户是testcase。不要犹豫,删除它。

全部

java编写代码时易出错_写Java程序最容易犯的错误有哪些呢?相关推荐

  1. java编写代码时易出错_归纳:编写Java程序最容易犯的21种错误

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

  2. java编写代码时易出错_JAVA中易出错的小问题(一)

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ------------ 第一:奇数性 static boolean isodd(int i){ re ...

  3. 用java编写一个简易功能画板_用Java语言编写一个简易画板

    讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...

  4. java工程打包时进行签名_使用Java SDK实现离线签名

    严格来说,tx-signer并不属于SDK,它是bytomd中构建交易.对交易签名两大模块的java实现版.因此,若想用tx-signer对交易进行离线签名,需要由你在本地保管好自己的私钥. 如果你的 ...

  5. java用代码实现星期菜谱_基于JAVA的菜谱大全接口调用代码实例

    基于JAVA的菜谱大全接口调用代码实例 代码描述:基于JA V A的菜谱大全接口调用代码实例 接口平台:聚合数据 import java.io.BufferedReader; import java. ...

  6. java 编写代码_如果您在2016年编写过Java代码-这是您不容错过的趋势

    java 编写代码 2016年最有趣的Java相关主题 关于代码,有很多热门话题,而要跟上所有事情,这是一项全职的工作. 如果您想知道如何从谷壳中分离出小麦,我们已经为您完成了工作. 在下面的文章中, ...

  7. vb.net编写函数应该在哪里_编写代码时清晰至上

    好的代码是清晰的代码,而不是聪明的代码 Photo by David Travis on Unsplash 许多程序员尝试编写干净,智能的代码. 但是,有时候,痴迷于智能可能会使代码库更难以理解,并且 ...

  8. java编写代码用什么_如何学习用Java编写代码:为什么要学习以及从哪里开始

    java编写代码用什么 by John Selawsky 约翰·塞劳斯基(John Selawsky) 如何学习用Java编写代码:为什么要学习以及从哪里开始 (How to learn to cod ...

  9. java 编写代码_如果您在2015年编写过Java代码-这是您不容错过的趋势

    java 编写代码 去年我们有机会遇到的最有趣趋势的实用概述 在这篇文章中,我们回顾了构成我们2015年对话的5个主题和新发展.与其他许多年终总结保持较高水平的不同,我们将做一个更实际的操作不用流行语 ...

最新文章

  1. css3 奇技淫巧 - 如何给小汽车换个背景色谈起
  2. oracle的connect by语句
  3. juqery代码优化
  4. 学计算机应用技术应具备什么素养,2018年云南经济管理学院单招计算机应用技术职业适应性测试大纲...
  5. Window.location.href命令在JS中跳转无效或自动忽略
  6. mootools LightBox
  7. 3.3 keras模型构建的三种方式
  8. vue-router 修改或添加新参数
  9. 日语学习之——学习技巧
  10. Excel宏的介绍及应用
  11. oracle 同义词转换错误,一次对dual表的恢复操作(ORA-00980:同义词转换不再有效错误解决方法) (转载)...
  12. PS学习-曝光与色彩处理(二)--纯净自然的高调照片
  13. Apple Watch简述
  14. u8如何备份文件服务器,用友u8 数据备份到云服务器
  15. Cura gui 代码编译流程
  16. openGL 纹理使用
  17. 新版RTSP协议网络摄像头网页无插件直播平台EasyNVR如何自定义通道的背景音乐?
  18. 上证50成分股聚类可视化
  19. 国产CPU产业链的逻辑架构
  20. Java并发包中那些值得学习的并发工具类(空谈误国,实干兴邦,代码示范,抛砖引玉)

热门文章

  1. margin和padding的区别
  2. 传图识字java_Java:全面 清晰的 NIO 学习攻略
  3. 0网卡开启_中标麒麟Linux v7系统下设置双网卡bond或team绑定详细过程
  4. SpringCloud Sleuth分布式请求链路追踪
  5. (JAVA)集合Collection3
  6. bzoj 4016: [FJOI2014]最短路径树问题
  7. luogu P1659 养猪 dp 好理解
  8. 《学习opencv》笔记——基本数据结构,CvMat,矩阵訪问
  9. [2-sat]HDOJ3062 Party
  10. 三白话经典算法系列 Shell排序实现