他们是否矛盾?
解耦是很棒的,很难实现.然而,在大多数应用程序中,我们并不真正需要它,因此我可以设计高度耦合的应用程序,除了明显的副作用之外,它几乎不会改变任何东西,例如"你不能分离组件","单元测试是痛苦的屁股"等
你怎么看?你总是试图解耦和处理开销吗?
在我看来,脱钩和YAGNI是非常互补的美德.(我刚刚注意到Rob的回答,似乎我们在这里的同一页.)问题是你应该做多少脱钩,而YAGNI是一个很好的原则来帮助确定答案.(对于那些谈论单元测试的人 - 如果你需要解耦进行单元测试,那么YAGNI显然不适用.)
我真诚地怀疑那些说他们"永远"脱离的人.也许他们每次想起都会这么做.但我从来没有见过一个程序,其中无法在某处添加额外的抽象层,我真诚地怀疑这样的程序有一个非平凡的例子.每个人都在某处画线.
根据我的经验,我已经解耦代码,然后从未利用额外的灵活性,因为我已经离开了代码耦合,然后不得不返回并稍后更改它.我不确定这是否意味着我在两个方向上都很平衡或同样被打破.