如果我希望我的代码遵循 SOLID 原则,特别是依赖倒置原则,这是否意味着我必须为每个模块创建一个接口(抽象),即使它只有一个实现?
在我看来,根据这些帖子:
http://josdejong.com/blog/2015/01/06/code-reuse/
http://blog.ploeh.dk/2010/12/02/Interfacesarenotabstractions/
为每个模块创建一个“抽象”是一种代码混乱,违反了 YAGNI 原则。
我的经验法则是:不要使用依赖注入,或者为模块创建接口,除非它有多个实现(第二个实现可能是一个模拟类,用于在数据库/服务器/文件模块的情况下进行单元测试)。
有人可以帮我解决这个问题吗?SOLID 是否意味着我必须注入每个模块并对其进行抽象?如果是的话,这不是很多我们根本不会在大多数时候使用的杂物吗?