Почему методы считывания снабжаются префиксом слово, “добираются”?

Вообще говоря, создание жидкого API является чем-то, что делает всех программистов счастливыми; И для создателей, которые пишут интерфейс и потребителей, которые программируют против него. Взгляд вне конвенций, почему случается так, что мы снабжаем префиксом все наши методы считывания слово, "добирается". Исключение его обычно приводит к более жидкому, легкому для чтения набора инструкций, который в конечном счете приводит к счастью (однако маленький или пассивный). Рассмотрите этот очень простой пример. (псевдо код)

Стандартный:

person = new Person("Joey")
person.getName().toLower().print()

Альтернатива:

person = new Person("Joey")
person.name().toLower().print()

Конечно, это только относится к языкам, где методы считывания/методы set являются нормой, но не направлен ни на какой определенный язык. Были эти конвенции, разработанные вокруг технических ограничений (разрешение неоднозначности), или просто через преследование более явного, намеренного чувствительного типа интерфейса, или возможно это - просто случай струйки вниз норма. Каковы Ваши мысли? И как был бы простые изменения в этих конвенциях влиять на Ваше счастье / ежедневные отношения к Вашему ремеслу (однако минимальный).

Спасибо.

6
задан Joey 15 April 2010 в 19:50
поделиться

7 ответов

Пользовательский.

Кроме того, в C ++, если вы возвращаете ссылку, это обеспечивает потенциальную утечку информации в сам класс.

0
ответ дан 8 December 2019 в 05:20
поделиться

Потому что в языках без свойств name () является функцией. Однако без дополнительной информации это не обязательно конкретно о том, что он делает (или что он собирается вернуть).

Функции / методы также должны быть глаголами, потому что они выполняют какое-то действие. name () явно не соответствует требованиям, поскольку ничего не сообщает вам о том, какое действие выполняет.

getName () позволяет вам без сомнения знать, что метод вернет имя.

В языках со свойствами тот факт, что что-то является свойством, выражает то же значение, что и присоединение к нему get или set. Это просто делает вещи немного аккуратнее.

10
ответ дан 8 December 2019 в 05:20
поделиться

Я всегда ценю согласованный префикс get / set при работе с новым API и его документацией. Автоматическая группировка геттеров и сеттеров, когда все функции перечислены в алфавитном порядке, очень помогает различать простой доступ к данным и расширенную функциональность.

То же самое и при использовании intellisense / автозаполнения в среде IDE.

4
ответ дан 8 December 2019 в 05:20
поделиться

А как насчет случая, когда свойство названо в честь глагола?

object.action()

Определяет тип действия, которое нужно выполнить, или выполняет действие. .. Добавление get / set / do устраняет двусмысленность, что всегда хорошо ...

object.getAction()
object.setAction(action)
object.doAction()
3
ответ дан 8 December 2019 в 05:20
поделиться

Возможно, я не очень много пишу на Objective-C, но с тех пор, как я его узнал, я действительно полюбил его условности. То, о чем вы спрашиваете, - это , адресованный языком.

0
ответ дан 8 December 2019 в 05:20
поделиться

В школе нас учили использовать get, чтобы отличать методы от структур данных. Я никогда не понимал, почему паренсы не будут намеком. Я лично придерживаюсь мнения, что чрезмерное использование методов get / set может привести к ужасающей трате времени, и я вижу, что многие объектно-ориентированные программисты проходят через эту фазу вскоре после того, как приступят к работе.

1
ответ дан 8 December 2019 в 05:20
поделиться

Лучший ответ, который я когда-либо слышал для использования метода get Префиксы / set выглядят так:

Если вы их не использовали, оба метода доступа и мутатор (геттер и сеттер) имели бы одно и то же имя; таким образом, они будут перегружены. Как правило, следует перегружать метод только тогда, когда каждая реализация метода выполняет аналогичную функцию (но с разными входными данными).

В этом случае у вас будет два метода с одним и тем же именем, которые выполняют очень разные функции, и это может сбивать с толку пользователей API.

4
ответ дан 8 December 2019 в 05:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: