首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复'microsoft.maintainability‘构建错误?

如何修复'microsoft.maintainability‘构建错误?
EN

Stack Overflow用户
提问于 2012-10-26 19:41:25
回答 1查看 837关注 0票数 2

我有一个控制器,它包含一些私有的只读接口属性,它需要这些属性,以便通过调用服务来获取数据,然后使用该服务填充模型等

代码语言:javascript
复制
private readonly ISomeInterface _someObject;

在控制器构造函数中设置:

代码语言:javascript
复制
public ... (ISomeInterface someInterface, ...) {
...
_someObject = someObject
}

然后在对服务层的调用中使用_someObject来获取数据。

我不得不向控制器添加另一个属性,但现在当我构建解决方案时,我得到了以下错误:

代码语言:javascript
复制
CA1506 : Microsoft.Maintainability : 'ControllerName' is coupled with 87 different types from 30 different namespaces. Rewrite or refactor this class's methods to decrease its class coupling, or consider moving some of the class's methods to some of the other types it is tightly coupled with.

它要求我减少类的耦合,我知道这样做的一种方法是针对接口(抽象)进行编码-我已经在通过添加接口属性来做到这一点了?似乎通过再添加一个属性,就可以使其超过标记此错误的阈值。

如果我删除它,我不能得到我需要的数据?我需要修改什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-26 20:02:03

你的控制器有多少个动作?您是否有每个操作的视图模型?你对每个动作都有一个输入模型吗?对于每个控制器操作,您是否与不同的类进行交互?您可能需要将您的控制器拆分为多个控制器,以使其执行的操作更少,从而减少更改的原因,并减少依赖项。尽管使用接口可以将控制器从ISomeInterface的特定实现中解耦,但它不会对该警告做任何事情。更改为使用接口并不会减少类型的数量...它只是从具体类型更改为接口类型。

问题是警告不要让一个类做很多事情。有许多依赖项表明这个类做了太多的事情,应该被分成两部分。例如,如果这个控制器有一个"Bake Pie“、"Eat Pie”、"Make Ice Cream“和"Deliver”的动作,你可以将"deliver food“移到一个全新的类中……你也可以打开Make Ice Cream,然后你可以评估Bake Pie和Eat Pie是应该在同一个类中,还是应该放在不同的类中。关于馅饼的争论引发了人们的争论。

请参阅:SOLID (object-oriented design)

您是否有代码必须调用2个或更多不同的数据访问类,然后调用另一个类来创建视图模型。你可以将整个操作移到一个新的类中,从而将你对3个类的依赖减少到1个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13086276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档