知识卡片
YAGNI代码带来的是没人测试的路径
内容
为”以防万一”预先实现的功能分支违反了YAGNI(You aren’t gonna need it)原则——只实现业务实际需要的代码。这类代码因为要编写文档、测试和维护,增加了不必要的复杂性,且通常没有对应真实调用场景,测试覆盖低甚至为零,一旦未来真被意外触发,走的就是一条从没被验证过的代码路径,是安全漏洞和可靠性故障最容易藏身的地方。避免编写YAGNI类代码能提升代码可靠性、减少安全漏洞,同时节省开发用不着的功能的时间。
参考来源
- 位置:《Google系统架构解密:构建安全可靠的系统》第12章《编写代码》12.4.2节消除YAGNI类代码(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_100.html`)
- 结论依据:原文明确定义YAGNI原则为"仅实现业务需要的代码",指出为"以防万一"添加将来可能用得着的功能违反了这一原则、增加了不必要的复杂性,并总结"避免编写YAGNI类代码能提升代码可靠性……更精简的代码会有更少的安全漏洞,出错的概率也会更低"。
- 原始内容:有时为了"以防万一",设计解决方案时,开发人员会添加将来可能用得着的功能。这就违反了YAGNI(You aren't gonna need it)原则:仅实现业务需要的代码……综上,避免编写YAGNI类代码能提升代码可靠性。从另一方面来说,更精简的代码会有更少的安全漏洞,出错的概率也会更低。