Avez-vous déjà ouvert un fichier legacy.js datant de 2015, écrit par un développeur qui a quitté l'entreprise depuis longtemps (et qui détestait apparemment les commentaires), pour ressentir une montée d'angoisse immédiate ?
Des variables nommées x, data2, temp...
Des callbacks imbriqués sur 6 niveaux (le fameux "Callback Hell")...
Aucun typage, aucune sécurité, et une logique métier obscure.
Traditionnellement, nettoyer ce genre de dette technique prendrait une matinée entière, trois tasses de café et une dose massive de patience.
Mais nous ne sommes plus en 2020.
En 2026, refactoriser à la main est devenu aussi obsolète que d'écrire du CSS sans préprocesseur. Aujourd'hui, je vais vous montrer comment j'ai pris un morceau de code "horrible" et utilisé une technique de Prompt Engineering avancée pour le transformer en une œuvre d'art Clean Code, sécurisée et typée, en moins de 30 secondes.
L'Horreur : Le Code "Avant"
Commençons par le coupable. Voici une fonction d'authentification classique trouvée dans un vieux projet Node.js. Elle est vulnérable aux injections SQL, illisible et utilise des pratiques dépréciées.
// auth.js - Dernière modif : 12/04/2015 var db = require('database'); function log(u, p, cb) { var q = "SELECT * FROM users WHERE user = '" + u + "' AND pass = '" + p + "'"; db.exec(q, function(e, r) { if(e) { cb("error"); } else { if(r.length > 0) { var d = r[0]; if(d.active == 1) { // get roles var q2 = "SELECT * FROM roles WHERE uid = " + d.id; db.exec(q2, function(e2, r2) { if(e2) { cb("error roles"); } else { d.roles = r2; cb(null, d); } }); } else { cb("not active"); } } else { cb("wrong user"); } } }); }
Pourquoi ce code est un cauchemar :
- Faille de Sécurité Critique : Concaténation directe de chaînes SQL.
- Callback Hell : La structure en "sapin de Noël" rend la maintenance impossible.
- Nommage Cryptique :
u,p,q... Illisible. - Aucun Typage : Risque élevé d'erreurs d'exécution.
Le "Refactoring Magique" : Le Prompt Exact
Pour obtenir des résultats de niveau Senior Staff Engineer, vous devez prompter comme un architecte logiciel.
Contexte : Tu es un Expert Senior en TypeScript et Sécurité Backend.
Tâche : Refactorise le code fourni ci-dessous en appliquant les standards "Clean Code".
Contraintes strictes :
- Conversion TypeScript : Utilise des interfaces strictes.
- Modernisation : Async/Await au lieu de callbacks.
- Sécurité : Requêtes paramétrées (Prepared Statements).
- Gestion d'erreurs : Try/Catch robustes.
Code à traiter : [INSÉRER LE CODE SPAGHETTI ICI]
Le Résultat : Le Code "Après"
En quelques secondes, l'IA génère ceci. Admirez la clarté.
import { db } from './database'; interface User { id: number; username: string; isActive: boolean; roles?: Role[]; } /** * Authentifie un utilisateur de manière sécurisée. */ export async function loginUser(username: string, password: string): Promise<User> { // 1. Validation if (!username || !password) throw new Error('Identifiants requis.'); try { // 2. Requête paramétrée (Sécurité) const q = 'SELECT id, username, active FROM users WHERE user = ? AND pass = ?'; const users = await db.query<User[]>(q, [username, password]); const user = users[0]; if (!user) throw new Error('Compte invalide.'); if (!user.isActive) throw new Error('Compte inactif.'); // 3. Récupération fluide des rôles user.roles = await db.query('SELECT * FROM roles WHERE uid = ?', [user.id]); return user; } catch (error) { console.error(`Auth failed:`, error); throw error; } }
Le secret des meilleurs Lead Devs ? Ils n'écrivent pas tout le code. Ils auditent le code généré pour s'assurer qu'il respecte les standards les plus élevés.
🚀 Passez au niveau supérieur
Rejoignez l'écosystème RTN et dominez l'ère du développement assisté par IA.
Rejoindre la communauté
0 Commentaires