kir*_*kun 9 single-responsibility-principle yagni solid-principles
我可以通过封装,依赖注入,最少知识原则,你不需要它来掌握"做一件事"的部分; 但我怎么理解第二部分"做得好"?
给出的一个例子是完整性的概念,在同一篇YAGNI文章中给出:
例如,在允许添加项目,删除项目或修改项目的特征中,可以使用完整性来推荐"重命名项目".
但是,我发现这样的推理很容易被滥用到特征蠕变中,从而违反了"做一件事"的部分.
因此,看到相当一个特征属于"做得好"类别(因此,将其包含在函数/类/程序中)或其他"做一件事"类别(因此,排除它)的试金石是什么? ?
第一部分,"做一件事",最好通过UNIX的ls命令来理解,因为它包含了过多的标志来格式化它的输出,这些标志本应完全委托给另一个外部程序.但我没有一个很好的例子来看第二部分"做得好".
什么是一个很好的例子,删除任何进一步的功能将使它不"做得好"?
我认为“做得好”与函数的实现质量一样重要,而不是一组函数的完整性(在您的示例中具有重命名,以及创建和删除)。
做得好体现在很多方面,一些思维方式:
响应“特殊”输入的行为。例如,计算一些整数的平均值:
int mean(int[] values) { ... }
Run Code Online (Sandbox Code Playgroud)
如果数组有零个元素,这会做什么?如果项目总数超过 MAX_INT?
性能特点。随着数据量的增加,是否对行为给予了足够的关注?
依赖失败。如果我们的实现依赖于其他模块或基础设施,那么当这些模块或基础设施失败时会发生什么。示例:文件系统已满,数据库已关闭?
关于功能蔓延本身,我认为您在这里确定紧张局势是正确的。您可能会考虑一件事:您不需要实现每个功能,因为很明显可以轻松添加功能而无需完全重写。