<critical_constraints> ❌ NO refactoring without tests first ❌ NO single-letter variables (n, x) → use descriptive names ❌ NO functions >20 lines → extract smaller functions ✅ MUST run tests after every change ✅ MUST commit frequently for easy rollback </critical_constraints>
<code_smells>
-
Duplicated code → extract to shared function
-
Long parameter lists → group into dataclass
-
Deep nesting → use early returns/guard clauses
-
Magic numbers → replace with named constants </code_smells>
Type Hints
def get_user(user_id: int) -> Optional[User]: return db.find(user_id)