У меня есть переменная с именем
List<String> names;
если у меня есть метод, подобный
Iterator getNames() { return names.iterator(); }
Технически это все еще метод получения, потому что я изменил его на Iterator?
Несмотря на то, что JDK допускает это, это не очень хорошая идея.
С одной стороны, существуют соглашения, основанные на именовании ваших методов, которые имеют некоторые зависимости от них.
Объекты JavaBean используют методы получения и установки для установки свойств компонента.Если они не подчиняются соглашению, программа потерпит неудачу.См. Спецификация JavaBeans, раздел 8.3.1
Объекты JSON - класс JSONObject использует методы доступа в конструкторе.См .: http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject(java.lang.Object)
Некоторые реализации JPA будут некорректно обрабатывать ваши классы сущностей, если у них есть несколько получателей с одинаковым именем, но разными типами возврата.
IСпорим, что существует больше зависимостей, но даже если они не применимы к вашему решению, все же разумно следовать соглашению ради удобочитаемости.Вы не хотите, чтобы какой-то другой разработчик ругал вас когда-нибудь в будущем за нарушение стандартов:)
Если ваш класс будет подвергнут интроспекции некоторым бобовым инструментом, getNames () должна вернуть именаДля ясности назовите это так:
getNamesIterator();
Это кажется мне плохой идеей с точки зрения дизайна.
Я бы просто получил геттер public List<String> getNames().
public List<String> getNames()
Для «безопасной публикации» следует рассмотреть возможность возврата копии списка в реализации:
public List<String> getNames() { return new ArrayList<String>(names); }
Вы думаете иначе.Метод вида getXxx является геттером.Соглашения Java не подразумевают, что у вас должно быть поле с именем xxx.Это ваш класс бизнеса, и инкапсуляция обеспечивает только: возможность скрыть ваши структуры данных для других классов.
Извините за опечатку, мобильный ...