【问题标题】:Should all objects be decoupled [closed]是否应该将所有对象解耦[关闭]
【发布时间】:2012-12-15 00:34:57
【问题描述】:

我有一个问题似乎无法在任何地方得到解答。这是关于将您的代码与接口解耦。问题是 - 是否应该将其他对象(正在创建和使用)中的所有对象重构为接口以遵循 S.O.L.I.D. 的依赖倒置原则?在均匀驱动的方法中新建对象怎么样?例如。当我按下按钮时调用的方法。对象是否应该通过构造函数传入?当然,这一切都适用于我的对象,而不适用于 BCL 对吧?

【问题讨论】:

  • 答案是“视情况而定”。
  • 问问你的居民“建筑师”。 (这取决于您项目的总体愿景。)

标签: c# dependency-injection decoupling


【解决方案1】:

millimoose 给出了一个很好的答案。它特别好,因为它是任何编程问题的正确答案:)

我想详细说明一下。在处理这样的场景时,以下条件成立:

  1. 去耦需要自己的成本。
  2. 没有代码是完美的,因为您可能不会有足够的时间来处理它。
  3. 如果您的代码耦合程度超出预期,这并不是世界末日。

因此,不要以全有或全无的命题来看待它,而应将其视为分数。你愿意忍受多少耦合?你愿意为脱钩付出多少?在某些时候,设计时间和可维护性之间存在平衡 - 请记住,您甚至不知道您的代码将如何更改。

您是否听说过《基于事件的编程:将事件发挥到极致》一书?这都是关于耦合的: http://books.google.com/books?id=9CL446IzhuAC&pg=PR21&dq=taking+events+to+the+limit&hl=en&sa=X&ei=bcfLUMzRMcWLqgHi-oHoBw&ved=0CDUQ6wEwAA

作者声称你不能消除所有的耦合,但你可以转换它,耦合应该转移到更简单的类。也许您可以将其作为您努力的指南。

【讨论】:

  • “你愿意为解耦支付多少钱?在某些时候,设计时间和可维护性之间存在平衡——记住你甚至不知道你的代码会如何改变。”似乎如果您从一种理念开始,即从一开始就将所有事物解耦,那么您的项目不会增加任何开销,因此您无需证明花费任何额外的时间解耦是合理的。你会自动按照你的设计去做。
  • 我认为如果你一开始就打算解耦,那么这样做会更便宜,但它可能仍然比(部分)耦合设计成本更高。这取决于很多因素。还要记住,我只是在计算初始版本的成本;不知道长期维护将导致何处,我不能说特定的脱钩是否会“得到回报”。
猜你喜欢
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 2017-07-15
相关资源
最近更新 更多