В Java по соглашению getter и setter для логических полей будут isField()
и setField()
. Это отлично работает с именами полей , которые являются таким прилагательными , как active
, visible
, closed
и т.д.
Но как я могу назвать поле, которое имеет значение глагола, например haveChildren
? Может быть, добавить «_ing» к глаголу ( )?havingChildren
Чтобы уточнить, у меня нет контроля над именами методов (getter и setter), поскольку они автоматически генерируются IDE. Так что мне нужно подходящее имя поля, чтобы когда IDE генерировала для него геттер, это имело смысл. Например, hasChildren
это идеальное имя поля, но когда IDE сгенерирует метод получения для поля, это будет так isHasChildren
. Как мне это решить?
parent
будет работать.Ответы:
Короткий ответ:
Длинный ответ:
haveChildren()
должен быть названhasChildren()
.Также я не считаю
hasChildren()
нужным быть получателем для логического члена класса. Я предполагаю, что такой метод выяснил бы, является ли член типаCollection
пустым.Имя по умолчанию, которое IDE дает сгенерированным геттерам, и сеттеры не должны быть законами, установленными в камне.
Еще один момент: интерфейсы имеют имена для еще не реализованных методов.
Если имена методов были предложены для отражения внутренней реализации, как кто-то сможет разработать интерфейс? Интерфейсы не имеют реализации, и они заранее не знают, что разработчики будут делать под капотом.
Возьмем для примера
Iterator
интерфейс в Java.При реализации
Iterator
, даже если у вас есть логический элемент с именемnext
, вы не supossed переименоватьhasNext()
вisNext()
илиisHavingNext()
. Это деталь реализации. На самом деле, я реализовал,Iterator
и то, что я делаю, имеет член типа того, что мой класс имеет список, с именемnext
(не булево).hasNext()
затем возвращаетсяnext!=null
.Также посмотрите это:
Обратите внимание, что
isDead()
это не нормальный добытчик.Возьмите инструменты повышения производительности IDE такими, какие они есть.
источник
Я бы предложил переименовать поле
parent
так, чтобы получатель былisParent
и установщик былsetParent
.Вы также можете попробовать
childPresent
для имени переменной иisChildPresent
иsetChildPresent
как получатель и установщик.источник
parent
поле для хранения ссылки на родительский объект. Я думаю, что мне нужно общее правило для преобразования всех глаголов в прилагательные для логических полей.Вы могли бы поставить
does
перед глаголом. Например,doesHaveChildren
в вашем примере вы предоставили. Или, возможно, вshouldHaveChildren
зависимости от контекста.источник
isSomething
является частью этой спецификации, и вокруг нее делается много предположений, что бы там ни было, если идти против этого сdoesSomething
волей, это может сломать вещи не столь очевидными способами, что приведет к ошибкам.Вопрос совершенно разумный. Иногда переименование автоматически сгенерированного метода недостаточно. Пример. Ожидается, что управляемые JSF-компоненты будут иметь
isXyz()
метод полученияboolean xyz
свойства.Я согласен с BlackPanther, который предлагает переименовать поле
parent
и использовать вisParent
качестве имени метода. Согласно принципу сокрытия информации, читаемость методов получения и установки важнее, чем атрибут.источник