Règle
Faire une fonction évident évident.
Fonction des doivent clairement communiquer ce que fonction fonction
fait sans besoin aux lecteurs d' examiner la mise en œuvre.
Langues prises en charge : 45+Introduction
Les noms de fonctions qui ne révèlent pas leur objectif forcent les développeurs à lire l'intégralité de l'implémentation pour comprendre le comportement. Une fonction nommée process() ou handle() pourrait faire n'importe quoi, exigeant un effort mental pour en déduire le but réel. Des noms clairs et descriptifs comme validateUserEmail() ou calculateOrderTotal() communiquer l'intention immédiatement, rendant le code auto-documenté.
Pourquoi c'est important
Maintenabilité du code : Les noms de fonctions peu clairs ralentissent la compréhension. Les développeurs perdent du temps à lire les implémentations pour comprendre ce que font les fonctions au lieu de se concentrer sur la logique métier. Cela s'aggrave lors du retour au code des mois plus tard ou lorsque de nouveaux membres rejoignent l'équipe.
Utilisation incorrecte : Les noms de fonctions ambigus augmentent le risque de mauvaise utilisation. Une fonction nommée update() pourrait valider, transformer, persister ou notifier, ce qui conduit les développeurs à l'utiliser de manière incorrecte car le nom ne spécifie pas le comportement. Des noms clairs préviennent les erreurs d'utilisation en documentant les contraintes et les effets secondaires.
Exemples de code
❌ Non conforme :
function process(data) {
const result = data.map(item => ({
...item,
processed: true,
timestamp: Date.now()
}));
db.save(result);
notifyService.send(result);
return result;
}
Pourquoi c'est incorrect : Le nom process() ne révèle rien sur ce qui arrive aux données. Les lecteurs doivent examiner l'implémentation pour savoir qu'elle transforme des éléments, les enregistre dans la base de données et envoie des notifications. Les effets secondaires et les responsabilités de la fonction sont masqués.
✅ Conforme :
function markItemsAsProcessedAndSave(data) {
const processedItems = data.map(item => ({
...item,
processed: true,
timestamp: Date.now()
}));
db.save(processedItems);
notifyService.send(processedItems);
return processedItems;
}
Pourquoi c'est important : Le nom indique explicitement que la fonction marque les éléments comme traités et les enregistre. Les lecteurs comprennent immédiatement le but principal de la fonction sans lire l'implémentation. Le nom suggère des effets secondaires (enregistrement en base de données), établissant des attentes appropriées.
Conclusion
Les noms de fonctions devraient répondre à la question « que fait cette fonction ? » sans nécessiter d'inspection du code. Ils devraient inclure des verbes décrivant les actions et des noms décrivant les cibles. Si un nom devient trop long, la fonction en fait probablement trop et devrait être scindée.
.avif)
