gpt4 book ai didi

solid-principles - 编写只做一件事并做好的程序

转载 作者:行者123 更新时间:2023-12-04 04:32:09 27 4
gpt4 key购买 nike

我可以通过封装掌握“做一件事”的部分,Dependency Injection , Principle of Least Knowledge , 和 You Ain't Gonna Need It ;但是我如何理解第二部分“做好”?

给出的一个例子是完整性的概念,在同一个 YAGNI article 中给出。 :

for example, among features which allow adding items, deleting items, or modifying items, completeness could be used to also recommend "renaming items".



但是,我发现这样的推理很容易被滥用到功能蠕变中,从而违反了“做一件事”部分。

那么,什么是查看某个功能属于“做得好”类别(因此,将其包含到函数/类/程序中)或其他“做一件事”类别(因此,排除它)的试金石?

第一部分“做一件事”最好通过 UNIX 的 ls 来理解。命令作为一个反例,因为它包含过多的标志来格式化其输出,这些标志应该完全委托(delegate)给另一个外部程序。但是我没有一个很好的例子来看到第二部分“做得好”。

什么是一个很好的例子,删除任何进一步的功能会使其“做得不好”?

最佳答案

我认为“做得好”与函数实现的质量有关,而不是与一组函数的完整性有关(在您的示例中具有重命名以及创建和删除)。

做好事体现在很多方面,一些思维方式:

响应“特殊”输入的行为 .例如,计算一些整数的平均值:

int mean(int[] values) { ... }

如果数组有零个元素,这会做什么?如果项目总计超过 MAX_INT?

性能特点 .随着数据量的增加,是否对行为给予了足够的关注?

依赖失败 .如果我们的实现依赖于其他模块或基础设施,那么当它们失败时会发生什么。示例:文件系统已满,数据库已关闭?

关于功能蠕变本身,我认为您在这里识别紧张是正确的。您可能会考虑一件事:您不需要实现每个功能,只要很明显无需完全重写即可轻松添加功能。

关于solid-principles - 编写只做一件事并做好的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com