Почему имена методов Java так широко используют префикс get?По крайней мере, в моих программах на Java есть много методов с именами, начинающимися со слова «get».Процент get-методов подозрительно высок.Я начинаю чувствовать, что слово «получить» теряет свое значение из-за инфляции.Это шум в моем коде.
Я заметил, что в функциональном / декларативном программировании и PL / SQL используется другое соглашение об именах.Имя метода просто указывает, что метод возвращает.Вместо account.getAmount()
или Time.getIsoFormattedDateString(Date date)
они будут использовать account.amount()
и Time.isoFormattedDateString(Date date)
.Это имеет смысл для меня, так как имя функции описывает результат оценки метода (при условии, что нет никаких побочных эффектов, которых не должно быть в любом случае).Префикс get выглядит излишним.
Я только начал читать книгу «Чистый код».В нем говорится, что методы должны выполнять только одну вещь, и эта вещь обычно должна быть одной из следующих:
- Уведомить некоторый объект о событии, обычно передавая событие в качестве параметра.
- Задайте вопрос о каком-либо объекте, обычно с именем метода, формирующим оператор естественного языка, передавая объект в качестве параметра и возвращая логическое значение.
- Получите что-нибудь, возможно, передав некоторый ключ поиска или какой-либо объект для преобразованияв качестве параметра и всегда возвращая нужный объект / значение.
Мой вопрос касается третьей категории.Существуют ли соглашения об именах, отличные от «get», для таких методов?Какие критерии вы используете при выборе имен / префиксов методов?
Вот пример:
У меня есть класс с двумя методами getDates()
и getSpecialDates()
.getDates()
просто возвращает значение закрытой переменной (ссылка на коллекцию дат).Это стандартный геттер, насколько я понимаю.getSpecialDates()
отличается;он вызывает getDates()
, выбирает фильтр из другого класса, применяет фильтр и возвращает то, что фактически является подмножеством getDates()
.
Метод getSpecialDates () может быть назван computeSpecialDates()
, findSpecialDates()
,selectSpecialDates()
или elicitSpecialDates()
или что угодно.Или я мог бы просто назвать это specialDates()
.И затем, для согласованности, я мог бы переименовать getDates()
в dates()
.
Зачем беспокоиться о разделении между методами, которые должны иметь префикс «get», и методами, которые не должны, и зачем искать слова для замены для «получить "?