#oop #coding-style #naming-conventions
#ооп #стиль кодирования #соглашения об именовании
Вопрос:
Методы должны указывать объектам, что делать, например:
circle.paint()
Но если я сообщу объекту getSomething()
, я бы сказал объекту получить «что-то» (из любого места) и не возвращать «что-то», каково типичное использование get
методов ( getName()
вернуло бы «имя»).
Я думаю, что правильнее было бы назвать метод returnSomething()
.
Так get
(как обычно используется) является неправильным шаблоном именования?
Ответ №1:
Соглашение, вероятно, варьируется в зависимости от используемого вами языка, в php (который не поддерживает методы получения / установки) довольно распространено следующее:
$myObject=>setSomething($value)
— устанавливает внутреннюю переменную $MyObject, представляющую ‘something’, в $value
$myObject=>getSomething()
— возвращает внутреннюю переменную $MyObject, представляющую «нечто»
Это менее распространено в таких языках, как C #, которые поддерживают методы получения / установки, где вы, вероятно, сделали бы следующее:
public object Something {
get { return _something; }
set { _something = value; }
}
Затем вы можете использовать синтаксис dot для доступа к частной переменной:
myObject.Something="something";
string value=myObject.Something;
Комментарии:
1. Это похоже на соглашение Java, но, возможно, эти соглашения плохие с точки зрения ооп.
Ответ №2:
Я лично не использую Get
префикс.
Единственный префикс, который я использую для методов, которые что-то извлекают, — это Is
для «индикаторов».
Например, оплата.IsOverdue()
Что касается методов установки — они не должны существовать.
Состояние объекта должно определяться само по себе посредством вызываемого поведения.
Get
в этом нет необходимости, потому что, когда мы запрашиваем что-то, для именования следует использовать существительные.
Комментарии:
1. Возможно,
get
это всего лишь плохое решение для языков без свойств.
Ответ №3:
Демон, прежде всего, я думаю, что это как бы зависит от языка.Во-вторых, у меня есть для вас эти рекомендации по именованию методов.
Ниже приведены примеры методов с правильными именами.
removeAll()
GetCharArray()
Invoke()
Я также могу сказать, что в компании, в которой я работаю, мы всегда используем такие имена, как GetSomething()
, GetYourAcceptRateHigher()
для наших методов.