Возможный дубликат:
Свойства vs Методы
Во многих ситуациях очевидно, должно ли что-то быть свойством или методом, однако есть элементы, которые могут считаться неоднозначными.
Очевидные свойства:
- "name"
- "длина"
Очевидные методы:
- "SendMessage"
- "Печать"
Неоднозначно:
- "Valid" / "IsValid" / "Validate"
- "InBounds" / "IsInBounds" / "CheckBounds"
- "AverageChildValue" / "CalcAverageChildValue"
- "ColorSaturation" / "SetColorSaturation"
Я полагаю, я бы склонялся к методам для двусмысленных, но кто-нибудь знает правило или соглашение, которые помогают решить это? Например. должны ли все свойства быть O (1)? Если свойство не сможет изменить другие данные (ColorSaturation может изменить значения R, G, B)? Если это не свойство, если есть расчет или агрегация?
С академической точки зрения (и не потому, что я думаю, что это хорошая идея) есть ли причина не сходить с ума от свойств и просто сделать все, что является допросом класса, не принимая аргумента, и все, что может быть изменено о классе с единственным аргументом и не может сбой, свойство?