В чем проблема с отражением? - PullRequest
2 голосов
/ 29 июля 2011

Я разрабатываю приложение Eclipse RCP. Мне сказали, что часть пользовательского интерфейса будет создана дизайнером (?) С помощью Window Builder PRO, поэтому мне нужно создавать бизнес-логику для каждого представления, которое создает наш дизайнер.

Моя первая идея состояла в том, чтобы создать класс Controller для каждого представления и обрабатывать там логику приложения с небольшой помощью из Reflection (я не знаю, какие виджеты будет создавать дизайнер). Я думал, что это будет динамично, поэтому я буду радоваться, но наш лидер сказал мне, что мы не будем использовать Reflection.

Я услышал очень короткое объяснение, которое не имело никакого смысла для меня, поэтому мой вопрос:

Почему использование Reflection считается плохим / необслуживаемым?

1 Ответ

6 голосов
/ 29 июля 2011

Java - строго типизированный язык, со своими плюсами и минусами. Для всех минусов, это дает вам очень хорошую проверку во время компиляции. Ошибки / ошибки, обнаруженные во время компиляции, являются самыми дешевыми для поиска и исправления.

Отражение - это вещь времени выполнения. Вы не можете заставить компилятор проверять все, что вы делаете, используя отражение, поэтому, если вы используете отражение, вы потеряете много плюсов java. В частности, вы можете написать код, который компилируется, но взрывается во время выполнения. Термин, иногда используемый для кода отражающего типа, является «строковым типом» - вы используете имена методов (Strings), а не ссылки на реальные методы.

Разумеется, используется отражение, но всякий раз, когда вы его используете, помните, что вы подрываете силу Java. Использовать его широко, как в вашем случае, может быть вполне нормально, если ваши юнит-тесты охватывают достаточно случаев, чтобы дать вам уверенность в том, что вы используете его безопасно. Я бы санкционировал его использование, если бы код, который фактически использовал его, представлял собой довольно маленькую «полезную» базу кода.

...