Modifiers should only implement checks and not make state changes and external calls which violates the checks-effects-interactions pattern.
These side-effects may go unnoticed by developers/auditors because the modifier code is typically far from the function implementation.
(see here)
- Modifier Side-Effects
- Modifiers -> Checks
- No Side-Effects
- Unnoticed Side-effects
- Readability & Auditability
- No Side-effects
- Only Checks