Re: Геттеры и сеттеры
От: C0s Россия  
Дата: 18.06.08 12:06
Оценка: 4 (1) +1
Здравствуйте, 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, но тут возможны вариации)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.