Я исхожу из языков низкого уровня - С++ - это самый высокий уровень, в котором я программирую.
Недавно я наткнулся на Reflection, и я просто не могу понять, как его можно использовать без запаха кода.
Идея проверки класса/метода/функции во время выполнения, на мой взгляд, указывает на недостаток дизайна - я думаю, что большинство проблем Reflection (пытается) решить можно использовать либо с полиморфизмом, либо с надлежащим использованием наследования.
Неужели я ошибаюсь? Не понимаю ли я концепцию и полезность Reflection?
Я ищу хорошее объяснение того, когда использовать Reflection, где другие решения потерпят неудачу или будут слишком громоздкими для реализации, а также когда НЕ использовать его.
Просветите этот низкоуровневый lubber.