А конструктор вернуть на место не забыли (при полном переопределении прототипа), последний листинг? И выше речь шла вроде бы не просто о создании классов, а о наследовании.
А тут небольшой реальный пример. Оно полезно и с другой стороны, при рефакторинге с целью перехода на Spring Data JPA. Допустим есть большой проект, где все операции идут через EntityManager. Делаем кастом репозитории на все это, а потом постепенно переводим на @Query/Query from method names/Specification убирая методы из кастом репозитория.
Поработал плотнее с этой библиотекой (перевел на не один небольшой проект, где ранее было сделано на code.google.com/p/hibernate-generic-dao/), мнение изменилось в положительную сторону, можно сказать код стал даже немного изящным :)
Тоже там бываю иногда, присматриваюсь, набираюсь опыта. Не так давно один заказчик предложил фултайм, планирую принять предложение как только отпустят с текущего места работы. Изначально ресурс не расценивался как поиск серьезного места работы, но теперь ясно что он неплохо для этого подходит.
«И еще помните, что серьезные люди считают, что переписывание проектов с нуля – это признак непрофессионализма.»
Чьего непрофессионализма, того кто изначально написал какашку или менеджера, который допускает экономически невыгодные действия (рефакторинг, зачем если и так работает)?
Был у меня случай когда предложили поработать с проектом (на ведущей роли) который разрабатывался более двух лет, командой из 4-5 человек. Сам проект еле шевелится на нагрузках, переписать сами понимаете нереально, дорабатывать как бы тоже (структура БД не позволит).
А вот допустим фрилансю для себя в целях не столько заработать, сколько получить некоторый реальный опыт работы с интересующими инструментами и библиотеками, то есть работаю с не совсем привычными технологиями. Изначально делаю не совсем оптимально (ввиду недостатка опыты в данном направлении, сроков первой демонстрации, изначально не лучших выбранных библиотек и тд), но аккуратно и осмысленно, сразу ставлю TODO где видны сомнительные места, весь проект веду один — поэтому рефарактор проще. Заказчик заранее оповещен что планируется стадия рефаторинга, и вполне это допускает. Почему бы в таком случае и не порефакторить, и самому полезно (вообще когда тебя не гонят желание сделать лучше возникает чаще), и проекту, и оплачивается. А вот многие местные конторы уверен вообще не знакомы с таким понятием как рефакторинг, ну разве что только в свое свободное время :)
Особенно сложно рефакторить «динамические языки» (вроде JS), и крайне сложно когда нет единой структуры использования этих языков (куча разнородного JS кода раскидано по страницам, никаких классов, никаких неймспейсов). Все нужно загрузить в голову (язык ведь не компилируемый), чтобы найти общую часть, отследить связи, построить иерархию и тд.
Чьего непрофессионализма, того кто изначально написал какашку или менеджера, который допускает экономически невыгодные действия (рефакторинг, зачем если и так работает)?
Был у меня случай когда предложили поработать с проектом (на ведущей роли) который разрабатывался более двух лет, командой из 4-5 человек. Сам проект еле шевелится на нагрузках, переписать сами понимаете нереально, дорабатывать как бы тоже (структура БД не позволит).
А вот допустим фрилансю для себя в целях не столько заработать, сколько получить некоторый реальный опыт работы с интересующими инструментами и библиотеками, то есть работаю с не совсем привычными технологиями. Изначально делаю не совсем оптимально (ввиду недостатка опыты в данном направлении, сроков первой демонстрации, изначально не лучших выбранных библиотек и тд), но аккуратно и осмысленно, сразу ставлю TODO где видны сомнительные места, весь проект веду один — поэтому рефарактор проще. Заказчик заранее оповещен что планируется стадия рефаторинга, и вполне это допускает. Почему бы в таком случае и не порефакторить, и самому полезно (вообще когда тебя не гонят желание сделать лучше возникает чаще), и проекту, и оплачивается. А вот многие местные конторы уверен вообще не знакомы с таким понятием как рефакторинг, ну разве что только в свое свободное время :)
Особенно сложно рефакторить «динамические языки» (вроде JS), и крайне сложно когда нет единой структуры использования этих языков (куча разнородного JS кода раскидано по страницам, никаких классов, никаких неймспейсов). Все нужно загрузить в голову (язык ведь не компилируемый), чтобы найти общую часть, отследить связи, построить иерархию и тд.