我认为我与大多数人有不同的看法。我更喜欢将相关项目分组在一起。我不能忍受不得不跳来上课。代码应该流动,并根据可访问性(公共,私有,受保护等)使用实例化的顺序,或者实例与静态,成员与属性,函数之间的排序无济于事。因此,如果我Method
没有使用私有助手方法实现的公共方法HelperMethodA
,HelperMethodB
等等。然后,而不是必须远离该文件在对方这些方法,我将让他们彼此接近。同样,如果我有一个由静态方法实现的实例方法,我也将它们组合在一起。
所以我的课程通常是这样的:
class MyClass {
public string Method(int a) {
return HelperMethodA(a) + HelperMethodB(this.SomeStringMember);
}
string HelperMethodA(int a) { // returns some string }
string HelperMethodB(string s) { // returns some string }
public bool Equals(MyClass other) { return MyClass.Equals(this, other); }
public static bool Equals(MyClass left, MyClass right) { // return some bool }
public double SomeCalculation(double x, double y) {
if(x < 0) throw new ArgumentOutOfRangeException("x");
return DoSomeCalculation(x, y);
}
const double aConstant;
const double anotherConstant;
double DoSomeCalculation(double x, double y) {
return Math.Pow(aConstant, x) * Math.Sin(y)
+ this.SomeDoubleMember * anotherConstant;
}
}