Здравствуйте, Dziman, Вы писали:
D>public void setEntityName(String entityName) {
D> this.entity = loadFromDBByName(entityName);
D> this.entityName = entityName;
D>}
D>На код ревью было сделано замечание, что сеттер слишком сложный и надо переименовать метод в что-то типа loadEntityByName
вне зависимости от того как оно могло бы быть, loadEntityByName — плохое имя, т.к. подразумевает action. в сущности оно уже есть и называется loadFromDBByName
правильной была бы рекомендация задуматься над тем, что метод фактически должен называться setEntityNameСЗагрузкойИПобочнойУстановкойEntity, и как этого избежать
D>На мой же взгляд это нормально, что сеттер что-то делает помимо чисто установки значения.
сильно зависит от сложности побочных действий
с моей точки зрения loadFromDBЧто-то — сложный метод, который обычно throws DataAccessException или SQLException или в этом духе
как следствие, на уровне объекта-контейнера данных тяжело его использовать корректно
D>Для того и задумывалось использование оберток надо членами класса, чтобы выполнять в них необходимую дополнительную работу.
возможно, но здесь, скорее о другом
D>Или я что-то пропустил изучая ООП?
в контейнерах данных надо избегать делать алгоритмы
в конкретном случае телепатически предполагаю, что лучше иметь фабричный метод (у меня бы он был в отдельном классе), которая сначала загружает из разных углов данные, а потом уже конструирует объект, передавая ему только entity (скорее всего, не через сеттер, а через конструктор, т.к. я предпочитаю immutable, но тут возможны вариации)