消除YAGNI坏味道

Google代码健康:消除YAGNI坏味道

本文源于Google公司的马桶上的健康代码,作者:Marc Eaddy。

大多数的软件开发成本在于维护成本。降低维护成本的 一种方法是仅在真正需要时才实现某些东西,也就是“You Aren’t Gonna Need It(你将不会需要它)” (YAGNI)设计原则。
如何发现不必要的代码?跟随你的“嗅觉”!

代码坏味道通常是表示存在设计缺陷的代码模式。例如:创建仅有一个子类的基类或接口,可能表明你在猜测将来会需要更多的子类。相反,请你 践行增量开发和设计
:在实际需要之前不要添加第二个子类。

** 以下C ++代码具有许多YAGNI坏味道**:

class Mammal { ...
  virtual Status Sleep(bool hibernate) = 0;
};
class Human : public Mammal { ...
  virtual Status Sleep(bool hibernate) {
    age += hibernate ? kSevenMonths : kSevenHours;
    return OK;
  }
};

当真正仅需一个类时,维护人员就必须承担理解,记录和测试两个类的负担。即使所有调用方都传递false ,代码也必须处理休眠状态为真的情况,以及即使从未发生过的Sleep的情况,也必须处理Sleep 返回为错误的情况。这将导致不必要的代码永远不会执行。 消除这些坏味道可简化代码

class Human { ...
  void Sleep() { age += kSevenHours; }
};

以下是其他一些YAGNI的坏味道:

  • 除测试外从未执行过的代码(又称:到达时已失效的代码)
  • 设计为实际上不应为子类的子类(具有虚方法和/或保护的成员)的类
  • 可以是私有的公开或受保护的方法或字段
  • 总是具有相同的值的参数,变量或标记

值得庆幸的是, 通过寻找简单的模式,通常很容易发现YAGNI坏味道和一般的代码坏味道,并且使用简单的重构就可以轻松消除它们

你是否在考虑添加今天不会使用的代码?相信我,你将不会需要它!

原文 

http://kaelzhang81.github.io/2020/06/26/Google代码健康-消除YAGNI坏味道/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 消除YAGNI坏味道

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址