我使用Style Cop确保人们遵循之前设定的代码标准,然后根据我们的需要进行配置。几天后,我使用了Style Cop的默认设置来尝试一下,我对某些事情感到有些困惑。例如,如果我声明一个变量,我真的想说明它是什么类型。
int foo;
或
Bar foo = new Bar();
Style Cop希望您经常使用var
关键字。
我了解你,编译器和IDE可以通过实例化找出类型。
var foo = 1; // Makes foo and int
var foo = new Bar(); // Makes foo a Bar
当声明和实例化在一个步骤中完成时,它是否相当可见。
还有一些我对Style Cop似乎不太满意的事情,我基本上只是想知道标准Style Cop配置强制执行的编码风格有多常见,它来自哪里?
注意:var
以下的此用法无效,如hvd所述。让我感觉好一点var
直接;)。我留下它,因为它是在原始问题中
但如果你有一些不起眼的东西,比如
var foo
... bunch of code ...
foo = getLatestData();
foo
成为什么并不明显。但是看一下foo
的宣言,你就不会变得更聪明。相反,你必须查看getLatestData
函数的声明。
我觉得var
方法会让一切都变得模糊不清。如果您声明foo
是int
,则没有严格的控制权。然后,您知道foo
总是 int
。它不依赖于它的数据。像这样的东西很可能会给你两种不同类型的foo。
var foo;
...
if(status == 0) {
foo = getLatestData();
}
else {
foo = getOtherData();
}
没有任何强制要求两个函数必须返回相同的类型,因此foo
可以变成不同的东西。当你自己编码所有内容并且包含这样的内容时,可能很容易跟踪。但是,如果它是一个API或插件库,如果外部第三方开发人员冷决定foo
的类型,那将是一场噩梦,因为在这种情况下您无法确定如何处理它。
答案 0 :(得分:0)
您的问题对var
有一些误解,这些误解已在评论中被提及并在链接的MSDN参考中得到澄清。
关于实际问题,我推断默认样式警察规则集强制执行的代码样式至少与默认样式警察规则集的使用相同。这个答案当然是一个重言式,但对于问题的残余是正确的。
如果您对var
关键字有更多疑虑,可以参考有关此主题的许多现有答案,请参阅Stack Overflow。