Annotation Type Evil


  • public @interface Evil
    WARNING!! You are using evil code. In the battle between good and evil, always strive for a heroic path. All code marked as @Evil is evil. It can destroy your assumptions and run amok in ways that are hard to anticipate. There are only two reasons to use Evil code:
    1. You are also evil and have embraced chaos over order
    2. You are pure enough to see the potential for good, and will help the evil code stay on a straight and narrow path
    Evil can be controlled by the strong and brave. With enough grace, mercy, and determination, you might even be able to completely tame evil code. You may even make it a redeemed companion... But remember that redemption comes at a cost. If you're attempting to control evil, you might need to explain how you're doing it. If you're reviewing code that uses evil code, it's a code smell and it's reasonable to ask for explanations. Categories of evil:
    • Functions with many arguments: The heroic path will use a complex object.
    • Function combinators with many arguments: The heroic path will use a complex object.
    • Disguising side-effects: The heroic path will create better abstractions. This is very hard.
    TODO: Give examples and reasoning on the above points