为啥这个 C# ctor 中的可维护性指数如此之低?
Posted
技术标签:
【中文标题】为啥这个 C# ctor 中的可维护性指数如此之低?【英文标题】:Why is the Maintainability Index so low in this C# ctor?为什么这个 C# ctor 中的可维护性指数如此之低? 【发布时间】:2018-12-30 11:22:04 【问题描述】:我有一个简单的 C# ctor,它初始化了一些变量:
public RSSSourceData()
RSSVersion = "";
ChannelTitle = "";
ChannelLink = "";
ChannelDescription = "";
Category = "";
Copyright = "";
Language = "";
PubDate = "";
ManagingEditor = "";
FileToProcess = "";
OnlineSource = "";
所有变量都是string
变量。
当我为整个项目运行代码度量时,对于这个 ctor,我得到了 57 的可维护性指数。我预计它会更高,因为在将值归因于变量时没有什么如此复杂需要过多的维护工作.
我在这里做错了什么?
稍后编辑:类字段的声明是:
class RSSSourceData
public string RSSVersion;
public string ChannelTitle;
public string ChannelLink;
public string ChannelDescription;
public string Category;
public string Copyright;
public string Language;
public string PubDate;
public string ManagingEditor;
public List<string> NewsTitle = new List<string>();
public List<string> NewsLink = new List<string>();
public List<string> NewsDescription = new List<string>();
private string OnlineSource;
private string FileToProcess;
private List<string> FileContent = new List<string>();
(...方法来这里)
【问题讨论】:
或者只是在你声明它们的地方初始化你的字段和属性。 最重要的因素是代码行数,试着删掉一两行,看看会不会变高 @kennyzx 我把所有的东西都写在一行代码上,分数就升到了67。哈哈,奇怪。 为什么要在构造函数中赋值RSSVersion
?为什么不改用public string RSSVersion = "";
?
我真的不觉得这个“可维护性指数”有用,它很像天气频道中的Comfort Index。高可维护性指数并不意味着代码写得很好。
【参考方案1】:
字段已用常量初始化。在您的示例中,它们是空的。通常情况下,它们会有一些值。
因此,如果您需要更改初始值,则需要深入研究源代码。
这就是可维护性高的原因。
【讨论】:
是的,现在就是这样。【参考方案2】:一个简单的答案是它受代码行的影响。
一个很长的答案是它真的很难维护。
-
为什么这个类/ctor 应该同时维护这么多状态?
是否有任何属性/字段依赖于之前的属性/字段初始化?
当它变长时,如何确保没有丢失属性/字段或重复初始化?
这个类是否仍然遵循高凝聚力?
如果是数据契约类,可以自动生成吗?
【讨论】:
“状态”是指“属性”?以上是关于为啥这个 C# ctor 中的可维护性指数如此之低?的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 Faster RCNN 在 GPU 上进行自定义对象检测的预测率 25 - 40 [sec/1] 如此之低?