C# 样式Cops默认配置的样式有多常见?

C# 样式Cops默认配置的样式有多常见?,c#,coding-style,stylecop,C#,Coding Style,Stylecop,我曾经使用样式Cop来确保人们在使用之前遵循既定的代码标准,然后根据我们的需要对其进行配置。几天来,我一直在使用带有默认设置的样式Cop来尝试它,我对一些事情感到有点困惑。例如,如果我声明一个变量,我真的喜欢声明它是什么类型 int foo; 或 Style Cop希望您经常使用var关键字。 我知道您、编译器和IDE可以通过实例化来确定类型 var foo = 1; // Makes foo and int var foo = new Bar(); // Makes foo a B

我曾经使用样式Cop来确保人们在使用之前遵循既定的代码标准,然后根据我们的需要对其进行配置。几天来,我一直在使用带有默认设置的样式Cop来尝试它,我对一些事情感到有点困惑。例如,如果我声明一个变量,我真的喜欢声明它是什么类型

 int foo;

Style Cop希望您经常使用
var
关键字。 我知道您、编译器和IDE可以通过实例化来确定类型

  var foo = 1; // Makes foo and int
  var foo = new Bar(); // Makes foo a Bar
当声明和实例化在一个步骤中完成时,可以清楚地看到正在发生的事情

还有一些我不太喜欢的样式Cop,所以我基本上只想知道标准样式Cop配置强制执行的编码样式有多常见,它起源于哪里

注意:
var
的以下用法不符合hvd的规定。让我马上感觉好一点。因为它是在原始问题中,所以我保留了它

但是如果你有一些模糊的东西,比如

  var foo

     ... bunch of code ...

     foo = getLatestData();
不清楚
foo
会变成什么。但是看看
foo
的声明,你不会变得更聪明。相反,您必须查看
getLatestData
函数的声明

我觉得
var
方法对一切都有点模糊。如果您声明
foo
int
,那么就不会有像您这样的严格控制。然后您就知道
foo
总是一个
int
。它不依赖于它从哪里得到数据。像这样的东西很可能会给你两种不同类型的食物

var foo;

...

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

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

您提出的问题有一些误解,这些误解已在注释中找到,并在链接的MSDN参考中得到澄清

至于实际问题,我可以推断,由默认样式Cop规则集强制执行的代码样式至少与使用默认样式Cop规则集一样常见。这个答案当然是重复的,但对于问题的剩余部分来说是正确的


如果您对
var
关键字有更多的关注,您可以在这里查阅有关堆栈溢出的许多现有答案。

var-foo无效
var
只能与初始化器一起使用,并且只能使用初始化器的类型。啊,这已经让我感觉更好了;)您始终可以自定义Stylecop规则集,实际上您必须这样做(例如,许多Stylecop规则与Resharper规则冲突),只要确保团队中的所有开发人员都使用该规则集即可。“那么你知道foo总是和int。它不取决于它从哪里得到它的数据”-在我看来这是一件好事-如果我改变我的方法以返回long而不是int,我就不需要修改使用该方法的代码。在
var foo=1
的情况下,你知道
foo
总是一个
int
var
不是动态的
——类型取自初始值设定器,然后是静态的。这真的只是一种方便。就我个人而言,我经常使用它,特别是在对象类型上-我认为
var list=new list()
list list=new list()
更可取,后者有点重复和冗余。我相信var;)。。。但其余的都是从哪里来的呢?是否有一个大型会议,人们在其中进行辩论,还是有人决定这应该是默认规则?:)
var foo;

...

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