美文网首页
代码的味道--烟熏鲱鱼3

代码的味道--烟熏鲱鱼3

作者: whyreal | 来源:发表于2016-07-25 16:29 被阅读15次

烟熏鲱鱼(臭臭)

指那些已经被添加了太多属性或者方法的,难以维护的的函数或类。通常这种情况不是突然出现的,而是随着代码进化而不断积累,特别是在没有人专门维护代码的时候。

对原始类型的迷恋

原文链接

症状

  • 在简单的任务中(比如currency,ranges,电话号码的字符串等等),使用原始类型替换小的对象。
  • 使用静态变量保存信息(比如:使用USER_ADMIN_ROLE = 1来标识用户是否有管理权限)
  • 在数据数组中使用静态变量作为字段名

原因

就像其他的坏味道一样,对原始类型的迷恋产生自不靠谱的言论。“就是一个字符串数据而已”。添加一个原始类型的数据要比创建一个新的 class 要简单的多,对吧?所以一个新的属性被添加了,然后类似的情况一再发生,类慢慢变得又臭又长。

解决办法

类中包含有独特行为和关联数据的属性


imageimage

创建新类,将该属性及相关的行为和数据从用来的类中抽离


imageimage

你经常从同一个对象中获取数据,然后传递给某个方法

int low = daysTempRange().getLow();
int high = daysTempRange().getHigh();
boolean withinPlan = plan.withinRange(low, high);

以传递整个对象的的方式替代之前的方式

boolean withinPlan = plan.withinRange(daysTempRange());

多个方法接受相同的一组参数


imageimage

使用这些参数构建新的对象


imageimage

类中经常会包含类型代码。这些类型的值不会出现在条件变短中,也不会影响程序的行为


imageimage

创建一个新类,使用这个类来替换之前那些类型代码


imageimage

还有一些类型编码会参与条件判断,从而影响程序行为


imageimage

为每个编码类型创建一个子类。然后将相关的行为从原来的类中分离出来。软后用多态替换之前的条件判断。


imageimage

如果没办法使用子类进行拆分


imageimage

用一个状态对象替换类型编码,根据类型编码的不同,将不同的状态对象插入到对象中


imageimage

收益

  • 用对象替代原始类型,使代码变得更加的灵活
  • 代码被更好的组织,变得更容易理解。对特定数据的处理集中到了一个地方,而不是分散在代码各处。再也不用考猜测来判断那些常量为什么出现在数组中。
  • 容易发现重复的代码

相关文章

  • 代码的味道--烟熏鲱鱼3

    烟熏鲱鱼(臭臭) 指那些已经被添加了太多属性或者方法的,难以维护的的函数或类。通常这种情况不是突然出现的,而是随着...

  • 代码的味道--烟熏鲱鱼2

    烟熏鲱鱼(臭臭) 指那些已经被添加了太多属性或者方法的,难以维护的的函数或类。通常这种情况不是突然出现的,而是随着...

  • 代码的味道--烟熏鲱鱼1

    烟熏鲱鱼(臭臭) 指那些已经被添加了太多属性或者方法的,难以维护的的函数或类。通常这种情况不是突然出现的,而是随着...

  • 代码的味道--烟熏鲱鱼5

    烟熏鲱鱼(臭臭) 指那些已经被添加了太多属性或者方法的,难以维护的的函数或类。通常这种情况不是突然出现的,而是随着...

  • 代码的味道--烟熏鲱鱼4

    烟熏鲱鱼(臭臭) 指那些已经被添加了太多属性或者方法的,难以维护的的函数或类。通常这种情况不是突然出现的,而是随着...

  • 红鲱鱼,诱饵,反本能的挣扎

    文丨浩然 红鲱鱼是一种腌制或者烟熏的食用鱼。普通鲱鱼不是红色,但进过腌制、烟熏之后就变成了红色,而且散发出刺鼻的味...

  • 朋友,你吃过鲱鱼罐头吗?

    【嘟嘟餐饮观察】 ★温馨提示:这是一篇有味道的文章! 朋友,你吃过鲱鱼罐头吗? 一说到鲱鱼罐头,大多数人应该是好奇...

  • 人间烟火

    什么是熟悉的味道? 饭菜香? 不,柴火的味道,烟熏火燎中的年味,才是熟悉的味道,等待了一年...

  • 儿时的年味

    年,是鞭炮燃烧的味道,是枣花馒头出笼的味道,是年糕甜甜的味道,是母亲烧火被烟熏的眯起眼睛的味道,是柴火燃烧时...

  • Chapter 3、代码的坏味道

    3.1 Duplicated Code(重复代码) 坏味道行列中首当其冲的就是Duplicated Code。如果...

网友评论

      本文标题:代码的味道--烟熏鲱鱼3

      本文链接:https://www.haomeiwen.com/subject/akogjttx.html