他们有矛盾吗?
解耦是一件伟大而又很难实现的事情。然而,在大多数应用程序中,我们并不真的需要它,所以我可以设计高度耦合的应用程序,它几乎不会改变任何其他明显的副作用,比如“你不能分离组件”,“单元测试很痛苦”等等。
你认为如何?您是否总是尝试解耦并处理开销?
发布于 2009-03-02 17:59:05
在我看来,解耦和YAGNI是非常互补的优点。(我刚刚注意到Rob的回答,似乎我们在这一点上是一致的。)问题是您应该做多大程度的解耦,YAGNI是一个很好的原则来帮助确定答案。(对于那些谈到单元测试的人来说--如果您需要解耦来进行单元测试,那么YAGNI显然不适用。)
我真的真心怀疑那些说他们“总是”脱钩的人。也许他们每次想到这个问题都会这么做。但我从来没有见过不能在某个地方添加额外抽象层的程序,我真心怀疑有没有这样的程序不是微不足道的例子。每个人都会在某处划一条线。
根据我的经验,我已经将代码解耦,然后再也没有利用过额外的灵活性,就像我将代码耦合在一起,然后不得不返回并在以后更改它一样。我不确定这是否意味着我在两个方向上都平衡得很好,或者同样地支离破碎。
发布于 2009-05-05 01:35:13
YAGNI是一条经验法则(不是一种宗教)。解耦或多或少是一种技术(也不是一种信仰)。所以它们并不是真正相关的,也不会相互矛盾。
YAGNI是关于实用主义的。假设你不需要什么,直到你需要。
通常假设YAGNI会导致解耦。如果你根本不使用这把刀,你最终会认为你需要有了解彼此行为的类,然后你才能证明这是真的。
“解耦”(或“松散耦合”)是一个动词,所以它需要工作。YAGNI是一个假设,当您发现它不再正确时,您可以对其进行调整。
发布于 2009-03-02 09:19:43
我(几乎)总是解耦。每次我这样做的时候,我都发现它很有用,而(几乎)每次我不这样做的时候,我就不得不在以后再做。我也发现这是一个减少bug数量的好方法。
https://stackoverflow.com/questions/601721
复制相似问题