General Clean Code Principles
Critical Rules
G5: DRY (Don't Repeat Yourself)
Every piece of knowledge has one authoritative representation.
# Bad - duplication
tax_rate = 0.0825
ca_total = subtotal * 1.0825
ny_total = subtotal * 1.07
# Good - single source of truth
TAX_RATES = {"CA": 0.0825, "NY": 0.07}
def calculate_total(subtotal: float, state: str) -> float:
return subtotal * (1 + TAX_RATES[state])
G16: No Obscured Intent
Don't be clever. Be clear.
# Bad - what does this do?
return (x & 0x0F) << 4 | (y & 0x0F)
# Good - obvious intent
return pack_coordinates(x, y)
G23: Prefer Polymorphism to If/Else
# Bad - will grow forever
def calculate_pay(employee):
if employee.type == "SALARIED":
return employee.salary
elif employee.type == "HOURLY":
return employee.hours * employee.rate
elif employee.type == "COMMISSIONED":
return employee.base + employee.commission
# Good - open/closed principle
class SalariedEmployee:
def calculate_pay(self): return self.salary
class HourlyEmployee:
def calculate_pay(self): return self.hours * self.rate
class CommissionedEmployee:
def calculate_pay(self): return self.base + self.commission
G25: Replace Magic Numbers with Named Constants
# Bad
if elapsed_time > 86400:
...
# Good
SECONDS_PER_DAY = 86400
if elapsed_time > SECONDS_PER_DAY:
...
G30: Functions Should Do One Thing
If you can extract another function, your function does more than one thing.
G36: Law of Demeter (Avoid Train Wrecks)
# Bad - reaching through multiple objects
output_dir = context.options.scratch_dir.absolute_path
# Good - one dot
output_dir = context.get_scratch_dir()
Enforcement Checklist
When reviewing AI-generated code, verify:
- No duplication (G5)
- Clear intent, no magic numbers (G16, G25)
- Polymorphism over conditionals (G23)
- Functions do one thing (G30)
- No Law of Demeter violations (G36)
- Boundary conditions handled (G3)
- Dead code removed (G9)