"Like all powerful ideas, REFLECTION and KNOWLEDGE LEVELS can be intoxicating [and] should be used sparingly." #readingToday
Like all powerful ideas, REFLECTION and KNOWLEDGE LEVELS can be intoxicating. This pattern should be used sparingly. It can unravel complexity by freeing operations objects from the need to be jacks-of-all-trades, but the indirection it introduces does add some of that obscurity back in. If the KNOWLEDGE LEVEL becomes complex, the system's behavior becomes hard to understand for developers and users alike. The users (or superuser) who configure it will end up needing the skills of a programmer— and a meta-level programmer at that. If they make mistakes, the application will behave incorrectly.
Domain-Driven Design, Eric Evans