为什么这个 C# ctor 的可维护性指数这么低?
Why is the Maintainability Index so low in this C# ctor?
我有一个简单的 C# ctor,它初始化了一些变量:
public RSSSourceData()
{
RSSVersion = "";
ChannelTitle = "";
ChannelLink = "";
ChannelDescription = "";
Category = "";
Copyright = "";
Language = "";
PubDate = "";
ManagingEditor = "";
FileToProcess = "";
OnlineSource = "";
}
所有变量都是string
个变量。
当我 运行 整个项目的代码指标时,对于这个 ctor,我得到了 57 的可维护性指数。我预计它会更高,因为没有什么复杂到需要太多维护致力于为变量赋值。
我做错了什么?
稍后编辑:class 字段的声明是:
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>();
(...方法在这里)
字段已用常量初始化。在您的示例中,它们是空的。通常情况下,它们会有一些值。
因此,如果您需要更改初始值,则需要深入研究源代码。
这就是可维护性高的原因。
一个简单的回答是它受代码行的影响。
长话短说,它真的很难维护。
- 为什么这个class/ctor要同时保持这么多状态?
- 任何 property/field 是否依赖于先前的 property/field 初始化?
- 当它变长时,如何确保不丢失 protperty/field 或重复初始化?
- 这样做class还遵循高内聚吗?
- 如果是数据合约class,可以自动生成吗?
我有一个简单的 C# ctor,它初始化了一些变量:
public RSSSourceData()
{
RSSVersion = "";
ChannelTitle = "";
ChannelLink = "";
ChannelDescription = "";
Category = "";
Copyright = "";
Language = "";
PubDate = "";
ManagingEditor = "";
FileToProcess = "";
OnlineSource = "";
}
所有变量都是string
个变量。
当我 运行 整个项目的代码指标时,对于这个 ctor,我得到了 57 的可维护性指数。我预计它会更高,因为没有什么复杂到需要太多维护致力于为变量赋值。
我做错了什么?
稍后编辑:class 字段的声明是:
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>();
(...方法在这里)
字段已用常量初始化。在您的示例中,它们是空的。通常情况下,它们会有一些值。
因此,如果您需要更改初始值,则需要深入研究源代码。
这就是可维护性高的原因。
一个简单的回答是它受代码行的影响。
长话短说,它真的很难维护。
- 为什么这个class/ctor要同时保持这么多状态?
- 任何 property/field 是否依赖于先前的 property/field 初始化?
- 当它变长时,如何确保不丢失 protperty/field 或重复初始化?
- 这样做class还遵循高内聚吗?
- 如果是数据合约class,可以自动生成吗?