【发布时间】:2013-12-27 05:43:56
【问题描述】:
使用 Visual Studio 计算指标。
第一种方法的 CC = 4
private IEnumerable<string> GetRows(DataTable dt, string columnDelimiter)
{
return from DataRow row in dt.Rows
select string.Join(columnDelimiter, row.ItemArray.Select(k => k.ToString()));
}
第二种方法的CC = 5。
private IEnumerable<string> GetRowsForeach(DataTable dt, string columnDelimiter)
{
var rows = new List<string>();
foreach (DataRow row in dt.Rows)
{
var rowString = string.Join(columnDelimiter, row.ItemArray.Select(k => k.ToString()));
rows.Add(rowString);
}
return rows;
}
我会说第一种方法应该有 CC = 1 和第二种可能 CC = 1 或可能 2 (理解 foreach 与结束条件。但我永远不会说他们的 CC 这么高。我误解了什么?
【问题讨论】:
-
大概算匿名函数和LINQ生成的代码。
-
@Tilo 它曾经更糟糕,因为它还计算了 lync 生成的样板代码。但事实上,Linq 语句增加了复杂性,它基本上是它自己的 foreach,不管它看起来多么简单。
-
@Tilo:你的回答让我有了不同的想法。我以为它扫描了我的源代码,而不是我的 IL。所以因为你是第一个如果你发表你的评论作为答案,我会接受它。
标签: c# visual-studio-2012 code-metrics