直到今天,我可以使用主要构造函数,例如:
public class Test(string text)
{
private string mText = text;
}
Run Code Online (Sandbox Code Playgroud)
为了能够做到这一点,在以前的Visual Studio CTP中,我不得不将其添加到csproj文件中:
<LangVersion>Experimental</LangVersion>
Run Code Online (Sandbox Code Playgroud)
无论如何,这不再适用于Visual Studio 2015预览版(有或没有LangVersion
).有没有人对可能发生的事情有任何想法?
我从头开始一个新项目,希望它干净/具有良好的编码标准.经验丰富的开发人员会以什么样的顺序在课堂上做出贡献?
答:1)公共方法2)私人方法3)公共变量4)私有变量
B:1)公共变量2)私有变量3)公共方法4)私有方法
C:1)公共变量2)公共方法3)私有方法4)私有变量
我通常喜欢将公共静态变量放在顶部,但是然后会在构造函数之前列出公共静态方法,还是应该首先列出构造函数?诸如此类的事情...
我知道这很有点但我只是想知道:这是什么最好的做法?
PS:不,我不使用Cc#.我知道.我是个luddite.
是否有一种标准的方式来布置C#文件?如在,Fields,然后是Properties,然后是Constructors等?
这是我通常做的,但我想知道是否有标准方式?
人们将他们的领域组合在一起,还是将他们放在属性中?或者人们不担心订单?Visual Studio似乎让它变得如此困难.
编辑:在此处移动有关ReSharper的其他部分:使Resharper尊重您对代码顺序的偏好.
在类中组织方法似乎有许多不同的方法.我可以通过访问对方法进行分组,并按字母顺序排序.我可以将相关方法组合在一起.我可以使用两者的混合,或完全不同的东西.有没有一种标准的方法来解决这个问题?如果没有,你怎么接近它?
我已经在各种项目中看到(并使用过)这种布局,其中一组字段后跟一组属性:
private int MyIntField;
private string MyStringField;
public int MyInt {
get { return MyIntField; }
set { MyIntField = value; }
}
public string MyString {
get { return MyStringField; }
set { MyStringField = value; }
}
Run Code Online (Sandbox Code Playgroud)
而且我也遇到了这个布局,其中包含了属性旁边的字段:
private int MyIntField;
public int MyInt {
get { return MyIntField; }
set { MyIntField = value; }
}
private string MyStringField;
public string MyString {
get { return MyStringField; }
set { MyStringField = value; }
}
Run Code Online (Sandbox Code Playgroud)
有理由考虑一个比另一个好吗?我认为大多数编码标准都会推荐选项#1,但有时它可以方便地使用在其上运行的属性旁边的字段.
注意:我假设不能使用自动实现的属性的非平凡属性.
在创建新的C#类时,我不确定用于声明属性,事件委托,函数,函数覆盖等的最佳逻辑顺序是什么,以及在决定该顺序时应该考虑哪些因素.
通常在创建WebUserControl类后面的代码时,我最终会按以下顺序放置内容:
有没有更合理的方法来做到这一点,在决定如何在类文件中订购类的这些元素时,我应该考虑哪些因素?
Resharper(与StyleCop配对)在遵守大部分规则方面让我有点整洁.其中一个规则集(我相信来自StyleCop)强制首先放置公共函数,然后保护静态,然后保护,然后是私有静态,最后是私有.
私有函数通常是将公共函数的功能备份为帮助程序的函数.假设我有以下函数的StyleCop强制执行:
public FunctionA
public FunctionB
private FunctionAHelper1
private FunctionAHelper2
private FunctionBHelper1
private FunctionBHelper2
Run Code Online (Sandbox Code Playgroud)
...虽然这并不是那么糟糕,我发现自己希望保持支持私有方法接近调用它们的函数,所以看起来更像是这样:
public FunctionA
private FunctionAHelper1
private FunctionAHelper2
public FunctionB
private FunctionBHelper1
private FunctionBHelper2
Run Code Online (Sandbox Code Playgroud)
您学到了什么能够指导课堂中方法的组织?什么是StyleCop想要公共/受保护/私人订购的理由?它真的归结为偏好问题,还是我没有看到的好处?
以下两个StyleCop规则发生碰撞!
SA1202:所有私有方法必须放在所有公共方法之后.
SA1204:所有静态私有方法必须放在所有非静态私有方法之前.
class Foo
{
public static void Bar() { ... }
private static void Grep() { ... }
public void Meep() { ... }
private void Moop() { ... }
}
Run Code Online (Sandbox Code Playgroud)
鉴于上面的类,StyleCop会抱怨已经在public方法上声明了一个私有方法
class Foo
{
public static void Bar() { ... }
public void Meep() { ... }
private static void Grep() { ... }
private void Moop() { ... }
}
Run Code Online (Sandbox Code Playgroud)
鉴于上面的类,StyleCop会抱怨静态方法已被声明为实例方法.
如果我希望对我的代码完全肛门并确保StyleCop总是通过验证,我该怎么做,或者只是(上帝禁止)关闭其中一条规则的唯一选择?
c# ×6
coding-style ×4
oop ×2
.net ×1
c#-6.0 ×1
class-design ×1
layout ×1
readability ×1
stylecop ×1