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的特殊情况。

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

全部

java 容易犯错_写Java程序最容易犯错误有哪些呢?相关推荐

  1. java clone 报错_创建ArrayList对象时显示CloneNotSupportedException错误

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 class EmpManager{ private ArrayList Emp = null; public EmpManager(){ Emp = ne ...

  2. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  3. java背单词软件_一个JAVA写的背单词程序

    一个JAVA写的背单词程序 2007-6-9文字大小:大中小 俺看了一些Java, 写个程序出来玩玩.由于界面是用Jbuilder生成的,可能代码比较乱,而且还没合起来. 目前版本是0.00001 / ...

  4. java多语言编程语言_为什么很多程序员信仰“Java是世界上最好的编程语言”

    看到这个标题,估计有不少PHPer要跳进来打我膝盖,跪请各位Java程序员保我周全. 因为PHP是所有web开发中使用最多的语言,也被称为最有生命力的语言,所以也就自然而言有了"PHP是世界 ...

  5. java 注解应用技巧_改善Java应用程序性能的快速技巧

    java 注解应用技巧 曾经遇到过性能问题吗? 我也是. 如果我的经理再喊一次" faaaaster",我一生都会有听力障碍. 顺便说一句,我能听到所有噪音中的德语发音吗? ;-) ...

  6. java修炼之道_《Java程序员修炼之道》

    第2章 新I/O 本章内容: --新I/O API(NIO.2) --Path:基于文件和目录的I/O新基础 --Files应用类和各种辅助方法 --如何实现常见的I/O应用场景 --介绍异步I/O ...

  7. java好的代码_做java软件工程师,怎样才能写出好的代码?

    原标题:做java软件工程师,怎样才能写出好的代码? Java代码之于java程序员而言就是左膀右臂,java代码写的好的java程序员明显更是企业的欢迎,一个优秀的java程序员的考核标准之一也是看 ...

  8. java如何获取手机号码_微信小程序+Java获取用户授权手机号码

    前言 小程序内可以直接通过授权获取用户微信号绑定的手机号码或用户添加的其他手机号码,这样可以使得小程序在进行账户的身份可控上又提高了一步,那么应该如何来获取手机号码呢?这篇文章就和大家一起来研究一下. ...

  9. java cell报错_有一个小小点问题,现在我想从eclipse上读取Excel表

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 有一个小小点问题,现在我想从eclipse上读取Excel表,但是sheet的方法getcell报错,请问这是哪儿的错呢?谢谢 源码及报错图片如下: pa ...

最新文章

  1. python怎么画条形图-用Matplotlib如何绘制条形图、直方图和散点图
  2. mysql5.7.19 创建用户_mysql5.7.19用户的创建和权限的操作
  3. 判断一组多选框至少有一个被选中_想不想拥有自己的篆刻印章?那就PS一个吧...
  4. ImCash:币圈英文术语大全
  5. 误删/usr/bin/python2.7解决方案
  6. 揭开网络编程常见API的面纱【下】
  7. android自动运行服务,Android开机自启动服务的实现方法
  8. PHP06 流程控制
  9. 音视频开发著作《Android音视频开发》终于发售了,先来一波签名送书福利!
  10. 推荐一款颜值逆天且功能齐全的开源Shell工具
  11. 【学习笔记】seckill-秒杀项目--(10)安全优化
  12. android 生成条码,Android -条形码的生成
  13. SAP 固定资产主数据
  14. CSS图片保持原比例
  15. android快速充电实现_手机充电ic介绍以及怎么用充电IC实现手机快速充电
  16. xfs文件系统恢复工具xfs_undelete
  17. linux质控命令,RNA-seq摸索:2.sra下载数据→fastqc质控→hisat2/bowtie2/STAR/salmon比对→Samtools格式转换→IGV可视化结果...
  18. 电源模块测试系统NSAT-8000
  19. 农行笔试题目计算机专业,农行计算机专业考试试题汇总.doc
  20. 【虚幻引擎UE】UE4/UE5 功能性插件推荐及使用介绍

热门文章

  1. 微软发布的新开源编程语言 Power Fx
  2. java创建gitlab账户_GitLab不会创建新的存储库
  3. vc++开发学习二(模态对话框和非模态对话框的创建和销毁)
  4. Javascript第五章为什么用firstChild获取table中最后一个节点会取到text或者tbody第十一课
  5. java制作扫雷游戏中埋雷的难点_java 扫雷游戏源码案例项目
  6. linux程序文本,Linux之文本处理
  7. 关于python字符编码_关于python文件的字符编码
  8. Test on 01/19/2019
  9. python3解析库pyquery
  10. Linux中的三个特殊文件