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