20 histoires avec 5 odeurs de code chacune sont 100 odeurs de code, n'est-ce pas ?
Nous allons continuer...
Vous ne possédez pas d'objets.
TL;DR : n'utilisez pas my comme préfixe de nom.
Plusieurs anciens tutoriels utilisent le mot "mon" comme un nom paresseux. Ceci est vague et conduit à des erreurs de contexte.
MainWindow myWindow = Application.Current.MainWindow as MainWindow;
MainWindow salesWindow = Application.Current.MainWindow as MainWindow; /* Since window is instanciated, we are currently working with a specialized window playing a special role */
Nous pouvons dire à nos linters et vérificateurs statiques de rechercher ce préfixe et de nous avertir.
Évitez d'utiliser mon . Les objets changent en fonction du contexte d'utilisation.
Photo de Michał Bożek sur Unsplash
En pensant à mon expérience de modification de code, je vois que je passe beaucoup plus de temps à lire le code existant qu'à écrire du nouveau code. Si je veux rendre mon code bon marché, je dois donc le rendre facile à lire.
Kent Beck
Excellentes citations de génie logiciel
Nous devons porter une attention particulière aux descriptions d'erreurs pour les utilisateurs (et nous-mêmes).
TL ; DR : Utilisez des descriptions significatives et suggérez des actions correctives.
Les programmeurs sont rarement des experts UX.
Nous sous-estimons également le fait que nous pouvons être des deux côtés du comptoir.
alert("Cancel the appointment?", "Yes", "No"); // No consequences // Options not clear
alert("Cancel the appointment? \n" + "You will lose all the history", "Cancel Appointment", "Keep Editing"); // Consequences are clear // Choice options have context
Nous devons lire tous les messages d'exception dans les revues de code.
Nous devons penser à nos utilisateurs finaux lorsque nous levons une exception ou affichons des messages.
Photo par visuels sur Unsplash
Même s'il est bien connu que les programmeurs ne font jamais d'erreurs, c'est toujours une bonne idée de faire plaisir aux utilisateurs en vérifiant les erreurs aux points critiques de votre programme.
Robert D. Schneider
L'orthographe et la lisibilité sont très importantes pour les humains et pas importantes pour les machines.
TL; DR : Faites attention à vos noms.
Beaucoup d'entre nous ne parlent pas l'anglais comme première langue.
Nous devons apporter un soin particulier à nos textes et à nos noms.
Cet article a une faute de frappe dans son titre comme preuve de contexte et aussi un clickbait 😀
comboFeededBySupplyer = supplyer.providers();
comboFedBySupplier = supplier.providers();
Portez une attention particulière à vos noms.
Vous serez probablement la personne qui lira le code dans quelques mois.
Code Smell 48 - Code sans normes
Qu'est-ce qu'un nom exactement — Partie I La quête
Qu'est-ce qu'un nom exactement - Partie II Rehab
Photo de Brett Jordan sur Unsplash
À l'intérieur de chaque grand programme bien écrit se trouve un petit programme bien écrit.
Voiture Hoare
Combien de fois voyons-nous des noms d'arguments paresseux ?
TL;DR : Nommez vos arguments en fonction du rôle et non de la position accidentelle
Lorsque nous écrivons des méthodes, nous ne nous arrêtons généralement pas pour trouver des noms décents.
Nous ne refactorisons jamais l'évidence non plus.
class Calculator: def subtract(self, first, second): return first - second class CalculatorTest def test_multiply(): assert equals(first, second)
class Calculator: def subtract(self, minuend, subtrahend): return minuend - subtrahend class CalculatorTest def test_multiply(): assert equals(expectedValue, realValue)
Nous pouvons avertir des mots interdits comme 'first' et 'second' comme noms d'arguments.
Suivez toujours la règle suggérant le paramètre.
Nommez vos collaborateurs selon le rôle.
Code Smell 65 - Variables nommées d'après les types
Qu'est-ce qu'un nom exactement - Partie II Rehab
Photo de Priscilla Du Preez sur Unsplash
Le code source final est la véritable conception du logiciel.
Jack Reeves
GOTO était considéré comme nuisible il y a 50 ans
TL; DR : N'utilisez jamais GoTo.
J'ai commencé à programmer en Basic.
GOTO y a été fortement abusé.
J'ai dû apprendre la programmation structurée à partir de zéro en mode Rehab.
for x < 0 { if x > -1e-09 { goto small } z = z / x x = x + 1 } for x < 2 { if x < 1e-09 { goto small } z = z / x x = x + 1 } if x == 2 { return z } x = x - 2 p = (((((x*_gamP[0]+_gamP[1])*x+_gamP[2])*x+_gamP[3])*x+_gamP[4])*x+_gamP[5])*x + _gamP[6] q = ((((((x*_gamQ[0]+_gamQ[1])*x+_gamQ[2])*x+_gamQ[3])*x+_gamQ[4])*x+_gamQ[5])*x+_gamQ[6])*x + _gamQ[7] return z * p / q small: if x == 0 { return Inf(1) } return z / ((1 + Euler*x) * x) }
for x < 0 { if x > -1e-09 { return small(x, z) } z = z / x x = x + 1 } for x < 2 { if x < 1e-09 { return small(x, z) } z = z / x x = x + 1 } if x == 2 { return z } x = x - 2 p = (((((x*_gamP[0]+_gamP[1])*x+_gamP[2])*x+_gamP[3])*x+_gamP[4])*x+_gamP[5])*x + _gamP[6] q = ((((((x*_gamQ[0]+_gamQ[1])*x+_gamQ[2])*x+_gamQ[3])*x+_gamQ[4])*x+_gamQ[5])*x+_gamQ[6])*x + _gamQ[7] return z * p / q small(x, z) { if x == 0 { return Inf(1) } return z / ((1 + Euler*x) * x) } }
Dans les langages supportant GOTO , nos linters peuvent nous mettre en garde contre son utilisation.
Nous avons reconnu les problèmes de GOTO il y a quelques décennies.
Le problème est toujours présent dans les langages modernes comme GoLang, PHP, Perl etc.
Heureusement, la plupart des programmeurs évitent la phrase GOTO. Le prochain objectif sera de considérer l'utilisation nuisible de null .
Courtoisie XKCD
Photo de Jens Johnsson sur Unsplash
Il est pratiquement impossible d'enseigner une bonne programmation à des étudiants qui ont déjà été exposés au BASIC : en tant que programmeurs potentiels, ils sont mentalement mutilés au-delà de tout espoir de régénération.
Edsger Dijkstra
Excellentes citations de génie logiciel
Et c'est tout pour l'instant, nous avons franchi le cap des 100.
Le prochain article expliquera 5 autres odeurs de code !