1

我以前使用 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总是一个. 它不依赖于它从什么获得数据。像这样的东西很可能会给你两种不同类型的 foo。int

var foo;

...

if(status == 0) {
  foo = getLatestData();
}
else {
  foo = getOtherData();
}

没有什么强制要求这两个函数必须返回相同的类型,foo因此可以变成不同的东西。当您自己编写所有代码并像这样包含它时,可能很容易跟踪。但是,如果它是一个 API 或插件库,那么如果外部 3rd 方开发人员冷冷地指定类型,那将是一场噩梦,foo因为在这种情况下您无法确定如何处理它。

4

1 回答 1

0

您的问题有一些误解,var这些误解已在评论中提出并在链接的 MSDN 参考中得到澄清。

至于实际问题,我会推断默认 Style Cop 规则集强制执行的代码样式至少与默认 Style Cop 规则集的使用一样普遍。这个答案当然是重言式,但是对于问题的残余是正确的。

如果您对关键字有更多疑虑,var您可以在 Stack Overflow 上查阅有关该主题的许多现有答案。

于 2012-08-10T08:17:34.113 回答