Является ли getSomething () плохим шаблоном именования методов? - PullRequest
2 голосов
/ 30 мая 2011

Методы должны указывать объектам, что делать, например:

circle.paint()

Но если я скажу объект getSomething(), я бы сказал объекту получить"что-то" (из любого места) и не до вернуть «что-то», каково типичное использование get методов (getName() вернет «имя»).

Я думаю, что было бы правильнее назвать метод returnSomething().

Так является ли get (как обычно используется) плохим шаблоном именования?

Ответы [ 3 ]

1 голос
/ 30 мая 2011

Я лично не использую префикс Get.

Единственный префикс, который я использую для методов, которые извлекают что-либо, это Is для «индикаторов».
Например, payment.IsOverdue ()

Что касается методов-сеттеров - их не должно быть.
Состояние объекта должно быть определено само по себе через вызванное поведение.

Get не нужно, потому что когда мы что-то просим, ​​для именования должны использоваться существительные.

1 голос
/ 30 мая 2011

Соглашение, вероятно, варьируется в зависимости от языка, который вы используете, в php (который не поддерживает методы getter / setter) довольно распространено следующее:

$myObject=>setSomething($value) - устанавливает внутреннюю переменную $myObject, представляющий «что-то» в $ value

$myObject=>getSomething() - возвращает внутреннюю переменную $ myObject, представляющую «что-то»

Это менее распространено в таких языках, как C #, которые поддерживают методы получения / установкигде вы, вероятно, сделаете следующее:

public object Something {
  get { return _something; }
  set {  _something = value; }
}

Затем вы можете использовать точечный синтаксис для доступа к закрытой переменной:

myObject.Something="something";
string value=myObject.Something;
0 голосов
/ 30 мая 2011

Деймон, во-первых, я думаю, что эта штука вроде как зависит от языка. Во-вторых, у меня есть Руководство по именованию методов для вас.

Ниже приведены примерыправильно названных методов.

RemoveAll ()

GetCharArray ()

Invoke ()

Я также могу сказать, что в компании, где я работаю, мы всегда используемимена типа GetSomething(), GetYourAcceptRateHigher() для наших методов.

...