четверг, 6 июня 2013 г.

Рефлексия - мощный подход, требующий повышенного внимания

Что привлекает в возможности иметь доступ к скрытым компонентам класса извне? Во время собеседования вас постоянно спрашивают об основных правилах ООП. Эти знания обязательны для прохождения хотя бы первого тура. Инкапсуляция в их числе. Разумеется.

Когда вы, наконец, получаете работу и начинаете кодировать, то понимаете, что многие популярные ORM-фреймворки нарушают данное правило. Не волнуйтесь. Фреймворки умнее каких-нибудь древних принципов. Просто сядьте поудобней и расслабьтесь.

Что не так?
  • С вашим кодом происходят странные вещи, а вы понятия не имеете, что и когда изменяет значение в private int. Как вообще оно может меняться, если не проводилась операция присваивания? Где вы установите точку останова, чтобы отладить код?
  • Вы решаете, что нужно написать для такого класса модульный тест и явно установить значение. Увы. Сеттера нет, потому что ранее он никому не понадобился.
  • Если существует что-то вроде аннотации @Autowired, разобраться в чем дело будет проще. Однако, некоторым инструментам она не нужна. О чем вы подумаете, если посмотрите на класс исключительно со скрытыми компонентами и без геттеров/сеттеров? Что класс используется, а приложение работает. Как? Почему?

Рефлексия - мощный подход, но используйте его более эффективно (и осторожно).

Комментариев нет:

Отправить комментарий