Я думаю, что у меня другая философия, чем у большинства. Я предпочитаю группировать связанные элементы. Я терпеть не могу прыгать, чтобы работать с классом. Код должен передаваться, и использование довольно искусственного упорядочения, основанного на доступности (общедоступном, частном, защищенном и т. Д.) Или экземпляре в сравнении со статическим или в виде члена или свойства в зависимости от функции, не помогает поддерживать хороший поток. Поэтому, если я добавлю открытый метод 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;
}
}