Clean Code en Go : principes et exemples pour débutants — partie 1
Le code propre n'est pas qu'un terme à la mode, c'est le fondement de la programmation professionnelle. Si vous apprenez Go (Golang) et souhaitez écrire des programmes faciles à lire, à maintenir et à étendre, les principes du Clean Code seront votre meilleur outil. Dans cet article, nous allons explorer les concepts de base du code propre en Go, adaptés même aux débutants.
Pourquoi le Clean Code est-il important en Go ?
Go a été conçu dès le départ comme un langage pour créer des solutions simples et efficaces. Cependant, sans respecter les règles du code propre, même un projet simple peut se transformer en « spaghetti ». Le code propre permet de :
- Réduire le nombre d'erreurs lors de la programmation ;
- Simplifier le travail en équipe ;
- Réduire le temps d'apprentissage pour les nouveaux développeurs ;
- Améliorer la lisibilité et la maintenabilité du code.
Principe 1 : Nommage correct
Les noms des variables, fonctions et paquets doivent refléter leur objectif. En Go, il est courant d'utiliser des noms courts, mais cela ne signifie pas qu'ils doivent être dépourvus de sens.
Mauvais exemple :
func f(a int, b int) int { r := a + b return r} Bon exemple (Clean Code) :
func AddNumbers(first int, second int) int { result := first + second return result} Remarquez : le nom de la fonction AddNumbers indique immédiatement ce qu'elle fait. Les variables first, second, result ne soulèvent aucune question non plus. C'est particulièrement important pour Go pour débutants, car des noms clairs accélèrent la compréhension du code.
Principe 2 : Minimiser la portée
En Golang, il existe des identifiants exportés (avec une majuscule) et non exportés (avec une minuscule). Utilisez cela pour masquer les détails internes d'implémentation.
Exemple :
package calculator
// Fonction exportéetype Calculator struct { result int}
func (c *Calculator) Add(value int) { c.result += value}
func (c *Calculator) GetResult() int { return c.result}
// Fonction non exportée — cachée du monde extérieurfunc (c *Calculator) reset() { c.result = 0} Ici, reset est inaccessible depuis d'autres paquets, ce qui protège l'état interne de l'objet. C'est l'un des principes clés du Clean Code — l'encapsulation.
Principe 3 : Les fonctions doivent être petites
Une fonction — une tâche. Si une fonction fait plus d'une action, il faut la diviser en plusieurs. Cela améliore la lisibilité et simplifie les tests.
Mauvais exemple :
func ProcessUser(name string, age int) string { if age < 18 { return "Accès refusé" } result := "Bonjour, " + name return result} Bon exemple (Clean Code) :
func IsAdult(age int) bool { return age >= 18}
func GreetUser(name string) string { return "Bonjour, " + name}
func ProcessUser(name string, age int) string { if !IsAdult(age) { return "Accès refusé" } return GreetUser(name)} Désormais, chaque fonction est responsable de sa partie. Cela facilite l'apprentissage et la maintenance du code.
Principe 4 : Gestion des erreurs
En Go, il n'y a pas d'exceptions — les erreurs sont retournées comme des valeurs. Le code propre exige une gestion explicite des erreurs, et non leur ignorance.
Mauvais exemple :
func ReadFile(path string) string { data, _ := os.ReadFile(path) return string(data)}