我可以通过封装、依赖注入、最少知识原则和你不需要它来掌握“做一件事”的部分;但是我如何理解第二部分“做好”?
给出的一个例子是完整性的概念,在同一篇 YAGNI 文章中给出:
例如,在允许添加项目、删除项目或修改项目的功能中,完整性也可用于推荐“重命名项目”。
但是,我发现这样的推理很容易被滥用到功能蠕变中,从而违反了“做一件事”部分。
那么,什么是查看某个功能属于“做得好”类别(因此,将其包含到函数/类/程序中)或其他“做一件事”类别(因此,排除它)的试金石?
第一部分“做一件事”最好通过 UNIX 的ls
命令来理解,作为一个反例,因为它包含过多的标志来格式化其输出,这些标志应该完全委托给另一个外部程序。但是我没有一个很好的例子来看到第二部分“做得好”。
什么是一个很好的例子,删除任何进一步的功能会使其“做得不好”?