我有一个方法可以处理大量的文件类型:
case ".jpg":
res = "image/jpeg";
break;
case ".pdf":
res = "application/pdf";
break;
case ".doc":
res = "application/msword";
break;
..这持续了几百行。我遇到了StyleCop错误:SP2101: Method body must not contain more than 120 code lines
我四处搜寻,找不到任何相关内容,更不用说抑制了。有谁知道如何压制这条消息?
编辑:我认为这是一个StyleCop+
错误,使用FxCop程序无法解决此问题。
答案 0 :(得分:8)
你可以将其重构为Dictionary<string,string>
:
var mimeTypesPerFileType = new Dictionary<string,string>();
mimeTypesPerFileType.Add(".jpg", "image/jpeg");
mimeTypesPerFileType.Add(".pdf", "application/pdf");
...
这会将方法中的行数减少大约三分之一(尽管这可能是在一个单独的方法/字段中,因此您不需要每次都重新填充字典。)
然后该方法改为:
return mimeTypesPerFileType[fileType];
更新
看到你有大约400个奇怪的情况(方法中大约1300行),你真的应该从文件或数据库加载这个地图。这将当然减少行数。
答案 1 :(得分:6)
我是StyleCop +的作者。
它添加到原始StyleCop功能的规则之一确实是 SP2101(MethodMustNotContainMoreLinesThan),它会检查方法的大小。
与任何其他StyleCop警告一样,它可能是:
此外,它是可配置的。如果您要使用此规则,则可以为您自己的配置添加任意数字而不是 120 。 120 只是默认值。
这条规则的重点在于可维护性。检查您是否属于意大利面条代码可能非常重要。 StyleCop只是一个让你能够控制它的工具。 StyleCop +提供了更多要检查的规则。所以如果你想使用它们 - 继续吧。如果你不这样做 - 只需禁用它。它是一种在使用之前真正需要配置的工具。
如果您需要任何配置帮助,请与我们联系。
答案 2 :(得分:4)
我不使用StyleCop,但一个建议可能是改变你的方法。您可以将所有这些值对存储在XML文件等中,并使用List(Of T)
对它们进行组织。您的方法可以简化为几行。