小鸦 - 破窗效应 简单的反思

破窗效应

定义

后来,辛巴杜用锤子把那辆车的玻璃敲了个大洞。 结果呢,仅仅过了几个小时,它就不见了。 以这项实验为基础,政治学家威尔逊和犯罪学家凯琳提出了一个“破窗效应”理论,认为:如果有人打坏了一幢建筑物的窗户玻璃,而这扇窗户又得不到及时的维修,别人就可能受到某些示范性的纵容去打烂更多的窗户。

软件工程

破窗效应其实反应了重构的需求, 而放纵软件中各种乱象, 其最终结果可预测到是软件的熵越来越高.

复制黏贴的例子

class A{
  private static Logger log = Logger.getLogger(A.class); //A.class参数复制黏贴容易忘记 (1)

  public void method(){
    {
    //想要使用的东西  (2)
    }

    dosth();//复制者不清楚该代码是干嘛(3)

  }


  private void dosth(){
    int A="Astring"
  }

}

//复制黏贴后

class B{
  private static Logger log = Logger.getLogger(A.class); //需修改 (1)

  public void method(){
    {
    //想要使用的东西  (2) 需全删除
    }

    dosth();
  }


  private void dosth(){
    String str="Bstring"//(3)需修改
  }

}


class C{
  private static Logger log = Logger.getLogger(A.class); //需修改 (1)

  public void method(){
    {
    //想要使用的东西  (2) 需全删除
    }

    dosth();
  }


  private void dosth(){
    int A="Astring"//(3)需修改
  }

}

复制黏贴了两次之后, 我们发现,这里有两处硬代码, 分别是(1),(3). 注意这时候, A,B,C是具有相同特征, 却没有进行重构,

重复代码数据少

  1. 通过将类A提取出来父类, B,C,D继承该父类(接口)
  2. 统一添加方法, 或者修改

Intellij IDEA有该重构的快捷操作

这时候若是找到相同特征, 就应该现在抽象出现. (重点) 即便不知道该抽象叫什么名字

抽象可以使用抽象类(反正JDK7下的就只能使用这个, 从而达到减少重复代码)

重复代码数量多情况 (开始崩坏)

当该类似的代码多了之后, 我们要进行重构就会遇到阻力.

  1. A,B,C,D….他们在哪个包, 要怎么找到他们. (这里显得有特征 [父类] 和 [接口]的重要性)
  2. 找到A,B,C,D..要进行一一修改, 这工作量大

接下来, 为什么我觉得这里会容易出现 [破窗效应]?

找到Class A,B,C…是有难度, 所以有的程序员认为, 应该采取碰到该类再修改, 出于以下原因

  1. 修改了之后不知道是否真没影响, 需要一一检查
  2. 工作量大, 工程进度要求, 且放下

这样导致的问题

  1. [疑惑] 新参与项目的员工遇到同一个功能, 有两种或以上写法, 倘若选择了旧的, 将会导致代码[破窗效应] (软件的熵升高)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值