Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在处理数据行时降低圈复杂度_C#_Cyclomatic Complexity - Fatal编程技术网

C# 在处理数据行时降低圈复杂度

C# 在处理数据行时降低圈复杂度,c#,cyclomatic-complexity,C#,Cyclomatic Complexity,我有下面的一段代码,它检查一个特定的DataRow是否有一个特定名称的列,以及它是否为NULL private static bool HasValue(DataColumn c, DataRow row) { if (c != null && row != null && row[c.ColumnName] != System.DBNull.Value) { return true; } return f

我有下面的一段代码,它检查一个特定的DataRow是否有一个特定名称的列,以及它是否为NULL

private static bool HasValue(DataColumn c, DataRow row)
{
     if (c != null && row != null && row[c.ColumnName] != System.DBNull.Value)
     {
         return true;
     }
     return false;
}
此外,我正在处理数据行的列并将其解析为相应的数据类型

foreach (DataColumn c in row.Table.Columns)
{
     switch (c.ColumnName)
     {
     case Constants.Literals.ACTIVATIONDATETIME:
                                if (HasValue(c, row))
                                {
                                    bFound = true; credentialInfo.ActivationDateTime = DateTimeOffset.Parse(Convert.ToString(row[c.ColumnName]));
                                }
                                break;
     }
}

VisualStudio将其显示为循环复杂。是否有任何方法可以减少此函数的圈索引。

只需返回链式语句和语句,即可稍微降低圈复杂度:

private static bool HasValue(DataColumn c, DataRow row)
{
    return c != null && row != null && row[c.ColumnName] != DBNull.Value;
}

您可以执行以下操作,而不是通过
行.Table.Columns
循环查找表中是否包含列:

var column = row.Table.Columns[Constants.Literals.ACTIVATIONDATETIME];
if(HasValue(column, row))
{
     //column found.
}

这消除了循环和其中的开关,并显著降低了函数的圈复杂度。

删除所有这些,并使用适当的强类型数据模型。这样,就不需要检查stuff是否具有具有特定名称的特定其他stuff,因为您使用的是强类型的stuff,而不是严格类型的字典。