Java程序最容易犯的21种错误实例分析

1.Duplicated Code

  代码重复几乎是最常见的异味了。他也是Refactoring的主要目标之一。代码重复往往来自于copy-and-paste的编程风格。与他相对应OAOO是一个好系统的重要标志。页1 页2 页3 页4 页5 页6 页7 页8 页9 页10 页11 页12 页13 页14 页15 页16 页17 页18 页19 页20 页21 页22 页23 页24 页25 页26 页27 页28 页29 页30 页31 页32 页33 页34 页35 页36 页37 页38 页39 页40 页41 页42 页43 页44 页45 页46 页47 页48 页49 页50 页51 页52 页53 页54 页55 页56 页57 页58 页59 页60 页61 页62 页63 页64 页65 页66 页67 页68 页69 页70 页71 页72 页73 页74 页75 页76 页77 页78 页79 页80 页81 页82 页83 页84 页85 页86 页87 页88 页89 页90 页91 页92 页93 页94 页95 页96 页97 页98 页99 页100 页101 页102 页103 页104 页105 页106 页107 页108 页109 页110 页111 页112 页113 页114 页115 页116 页117 页118 页119 页120 页121 页122 页123 页124 页125 页126 页127 页128 页129 页130 页131 页132 页133

  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.

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值