我已经使用Style Cop来确保人们遵循之前设定的代码标准,但之后将其配置为符合我们的需求。几天以来,我用Style Cop的默认设置来尝试一下,我对某些事情感到有点困惑。例如,如果我声明一个变量,我真的很想说明它是什么类型。Style Cops默认配置的风格有多常见?
int foo;
或
Bar foo = new Bar();
风格警察要你使用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
的类型,那将是一场噩梦,因为在这种情况下您无法确定如何处理它。
'var foo;'无效。 'var'只能用于初始化器,并且只能使用初始化器的类型。 – hvd 2012-08-10 07:07:15
呵呵,这让我感觉更好一些了:) – inquam 2012-08-10 07:09:11
您可以随时自定义Stylecop规则集,实际上您必须这样做(例如很多Stylecop规则与Resharper规则冲突),只要确保此规则集由团队中的所有开发人员。 “然后你知道foo总是和int,它不取决于它得到的是什么数据” - 在我看来这是一件好事 - 如果我改变我的方法返回long而不是int,I将不需要修改使用该方法的代码。 – Giedrius 2012-08-10 07:12:56