Utiliser des données qui ressemblent à des données
Peut-être le meilleur conseil de programmation de tous les temps ?
Il est temps pour moi de transmettre quelque chose que je pratique depuis des années mais que je n'ai pas trouvé écrit quelque part.
C'est une chose simple. Une chose pratique. Forgée dans les tranchées. Cela ne gagnera aucun concours dans lequel le public s'étonne et dit « oh, c'est intelligent ». Mais c'est facile, simple même. Et cela peut faire gagner beaucoup de temps et de larmes à la fin de la journée, n'est-ce pas l'une des meilleures choses ?
C'est ici:
Lors du débogage ou du test de votre programme, n'utilisez pas de données qui ressemblent à une variable ou à un nom de type.
N'utilisez pas de données qui ressemblent à une étiquette, à un nom de colonne ou à quelque chose que votre système d'exploitation possède en abondance.
N'utilisez pas de données qui semblent faire partie du programme.
Ne fais pas ça :
user = User::new(name: "user")
Faites plutôt ceci :
user = User::new(name: "my-test-user")
Au lieu de cela :
testpath = "folder/file"
Faites ceci:
testpath = "my-folder/its-subfolder/moo-sounds.wav"
(Si quelqu'un accourt maintenant, les poings serrés, impatient de se plaindre de la frappe supplémentaire : j'espère que vous glisserez sur une peau de banane.)
Ne faites jamais, jamais cela, ni dans le code de production, ni même lors des tests et du débogage :
return new Error("error")
Faites plutôt ceci :
return new Error("uh-oh quelqu'un a glissé sur une peau de banane")
Il en va de même pour les nombres. Lorsque vous devez utiliser un nombre quelque part, ne le faites pas — jamais ! Même si vous venez de glisser et de tomber et que vous vous faites mal — utilisez 1 ou 0, comme ceci :
sizeKilobytes = 1
Utilisez un 9, ou un 44, ou allez-y à fond, bébé :
sizeKilobytes = 999
user = User::new(id: 666)
Pourquoi?
Ce qui est du code et ce qui est des données (données saisies par l'utilisateur, données générées par l'exécution) doivent être clairs au premier coup d'œil.
Vous effectuez des tests, vous déboguez. La dernière chose que vous souhaitez est de ne pas savoir exactement ce qui se passe lorsque vous consultez les journaux (logs), les messages d'erreur ou une interface utilisateur que vous essayez.
Le premier coup d'œil devrait vous indiquer si vous regardez les données que vous avez saisies, les valeurs par défaut ou autre chose qui flotte dans votre système.
Vous ne voulez pas perdre de temps à réfléchir :
« Il est écrit ici « nom d'utilisateur ». Attendez, est-ce l'étiquette ou la valeur ? Est-ce le nom de la colonne ou la valeur du nom d'utilisateur ? »
Lorsque vous voyez le message d'erreur « dossier non trouvé », vous ne devez pas vous demander s'il s'agit de votre dossier de test appelé « dossier » ou d'un autre dossier.
L'utilisation de données qui ressemblent à des données vous aide à éviter les problèmes suivants :
« Le log indique « La création de l'entrée a échoué : erreur » — attendez, est-ce notre erreur que nous venons d'entrer ou… n'importe quelle erreur ? »
« Il est indiqué « échec de création du fichier » — cela signifie-t-il qu'il n'a pas réussi à créer un autre fichier ou mon fichier que j'ai appelé « fichier » ? »
« Utilisateur 1 introuvable. Est-ce le mien ou un autre ? Combien en créons-nous dans ce test ? »
« Taille non valide : 1 — attendez, est-ce que la taille que j’ai spécifiée a été utilisée ou est-ce la valeur par défaut ? »
Ces exemples peuvent paraître artificiels, peut-être mignons, mais… écoutez, faites-moi confiance. Ce n’est pas un conseil artificiel et réconfortant. Ce conseil est un tissu cicatriciel transformé en mots. Il m’a fait gagner des heures. Il m’a empêché de passer pour un idiot à plusieurs reprises et, encore une fois, n’est-ce pas ce que nous voulons tous ?
Ce n'est peut-être pas le numéro un, mais certainement le top cinq.
Merci de m’avoir lu!