Это хорошо, когда пишем проект с нуля.
А в случае работающего большого проекта, где что-то нужно регулярно подпиливать, это плохо работает — времени-то на это не выделяют, а подобное изменение в одном месте может вызвать лавинообразное изменение по всему коду.
Не зря было сказано про legacy.
Динамическое добавление свойств в языке Java