Audit 03 — Clean Code
Objectif : verifier la lisibilite, la clarte et la maintenabilite du code.
Cible : document-parser/ (hors .venv/, __pycache__/), frontend/src/
Checklist
3.1 Nommage
| # |
Item |
Poids |
| 3.1.1 |
Les fonctions sont nommees avec des verbes d'action (create_analysis, upload_document) |
1 |
| 3.1.2 |
Les variables expriment l'intention (remaining_pages et non rp) |
1 |
| 3.1.3 |
Tout le code est en anglais — les traductions i18n sont dans shared/i18n.ts |
2 |
| 3.1.4 |
Pas d'abbreviations ambigues sauf conventions etablies (dto, bbox, id, url) |
1 |
3.2 Fonctions
| # |
Item |
Poids |
| 3.2.1 |
Chaque fonction fait une seule chose (Single Responsibility) |
2 |
| 3.2.2 |
Aucune fonction ne depasse 30 lignes (hors boilerplate inevitable) |
1 |
| 3.2.3 |
Aucune fonction n'a plus de 4 parametres |
1 |
| 3.2.4 |
Pas de flag arguments (booleen qui change le comportement) |
1 |
| 3.2.5 |
Une fonction get_* ne modifie pas d'etat (pas de side-effects caches) |
2 |
3.3 Fichiers et structure
| # |
Item |
Poids |
| 3.3.1 |
Aucun fichier source ne depasse 300 lignes |
1 |
| 3.3.2 |
Un seul concept par fichier — pas de fichier fourre-tout |
2 |
| 3.3.3 |
Imports ordonnes : stdlib, deps externes, imports internes |
1 |
| # |
Item |
Poids |
| 3.4.1 |
Le code est auto-documentant — les commentaires expliquent le "pourquoi", pas le "quoi" |
1 |
| 3.4.2 |
Pas de code commente laisse en place (dead code) |
1 |
Commandes de verification
# 3.3.1 — Fichiers Python > 300 lignes
find document-parser -name "*.py" -not -path "*/.venv/*" -not -path "*/__pycache__/*" -not -path "*/tests/*" | xargs wc -l | sort -rn | head -20
# 3.3.1 — Fichiers Vue/TS > 300 lignes
find frontend/src -name "*.vue" -o -name "*.ts" | xargs wc -l | sort -rn | head -20
# 3.2.3 — Fonctions avec > 4 parametres (Python)
grep -rn "def .*,.*,.*,.*,.*," document-parser --include="*.py" --exclude-dir=.venv --exclude-dir=__pycache__ --exclude-dir=tests
# 3.4.2 — Code commente
grep -rn "^[[:space:]]*#.*=\|^[[:space:]]*#.*def \|^[[:space:]]*#.*return\|^[[:space:]]*//.*=\|^[[:space:]]*//.*function" document-parser --include="*.py" --exclude-dir=.venv frontend/src --include="*.ts" --include="*.vue"
Regles de notation
- Tout item de poids 3 non conforme = ecart
[CRIT]
- Tout item de poids 2 non conforme = ecart
[MAJ]
- Tout item de poids 1 non conforme = ecart
[MIN]