paint-brush
Comment trouver les parties puantes de votre code [Partie XX] : nous avons atteint 100 !par@mcsee
1,431 lectures
1,431 lectures

Comment trouver les parties puantes de votre code [Partie XX] : nous avons atteint 100 !

par Maximiliano Contieri1m2022/06/11
Read on Terminal Reader
Read this story w/o Javascript

Trop long; Pour lire

Comprenez les odeurs de code avec des exemples !

Company Mentioned

Mention Thumbnail
featured image - Comment trouver les parties puantes de votre code [Partie XX] : nous avons atteint 100 !
Maximiliano Contieri HackerNoon profile picture

20 histoires avec 5 odeurs de code chacune sont 100 odeurs de code, n'est-ce pas ?


Odeurs de code précédentes

Nous allons continuer...


Code Smell 96 - Mes Objets

Vous ne possédez pas d'objets.

TL;DR : n'utilisez pas my comme préfixe de nom.

Problèmes

  • Manque de contexte
  • Défaut de bijection

Solutions

  1. Supprimer mon préfixe.
  2. Passez à un rôle suggérant un nom.

Le contexte

Plusieurs anciens tutoriels utilisent le mot "mon" comme un nom paresseux. Ceci est vague et conduit à des erreurs de contexte.

Exemple de code

Mauvais

 MainWindow myWindow = Application.Current.MainWindow as MainWindow;

Droit

 MainWindow salesWindow = Application.Current.MainWindow as MainWindow; /* Since window is instanciated, we are currently working with a specialized window playing a special role */

Détection

  • [x] Automatique

Nous pouvons dire à nos linters et vérificateurs statiques de rechercher ce préfixe et de nous avertir.

Mots clés

  • Appellation

Conclusion

Évitez d'utiliser mon . Les objets changent en fonction du contexte d'utilisation.

Plus d'informations

Crédits

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


Code Smell 97 - Messages d'erreur sans empathie

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.

Problèmes

  • Le principe de la moindre surprise

Solutions

  1. Utiliser des messages d'erreur déclaratifs
  2. Afficher des actions de sortie claires

Le contexte

Les programmeurs sont rarement des experts UX.

Nous sous-estimons également le fait que nous pouvons être des deux côtés du comptoir.

Exemple de code

Mauvais

 alert("Cancel the appointment?", "Yes", "No"); // No consequences // Options not clear

Droit

 alert("Cancel the appointment? \n" + "You will lose all the history", "Cancel Appointment", "Keep Editing"); // Consequences are clear // Choice options have context

Détection

  • [x] Manuel

Nous devons lire tous les messages d'exception dans les revues de code.

Mots clés

  • Exceptions
  • UX

Conclusion

Nous devons penser à nos utilisateurs finaux lorsque nous levons une exception ou affichons des messages.

Crédits

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



Code Odeur 98 - Fautes d'orthographe

L'orthographe et la lisibilité sont très importantes pour les humains et pas importantes pour les machines.

TL; DR : Faites attention à vos noms.

Problèmes

  • Lisibilité
  • Plus difficile de rechercher des termes dans le code.

Solutions

  1. Vérifiez l'orthographe de votre code.
  2. Utiliser un IDE avec vérification orthographique

Le contexte

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 😀

Exemple de code

Mauvais

 comboFeededBySupplyer = supplyer.providers();

Droit

 comboFedBySupplier = supplier.providers();

Détection

Mots clés

  • Lisibilité
  • Appellation
  • Style de code

Conclusion

Portez une attention particulière à vos noms.

Vous serez probablement la personne qui lira le code dans quelques mois.

Rapports

Code Smell 48 - Code sans normes

Plus d'informations

Qu'est-ce qu'un nom exactement — Partie I La quête

Qu'est-ce qu'un nom exactement - Partie II Rehab

Crédits

Photo de Brett Jordan sur Unsplash


À l'intérieur de chaque grand programme bien écrit se trouve un petit programme bien écrit.

Voiture Hoare


Code Odeur 99 - Première Seconde

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

Problèmes

  • Lisibilité
  • Noms révélateurs d'intention

Solutions

  1. Utilisez des noms significatifs

Le contexte

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.

Exemple de code

Mauvais

 class Calculator: def subtract(self, first, second): return first - second class CalculatorTest def test_multiply(): assert equals(first, second)

Droit

 class Calculator: def subtract(self, minuend, subtrahend): return minuend - subtrahend class CalculatorTest def test_multiply(): assert equals(expectedValue, realValue)

Détection

  • [x] Manuel

Nous pouvons avertir des mots interdits comme 'first' et 'second' comme noms d'arguments.

Mots clés

  • Lisibilité

Conclusion

Suivez toujours la règle suggérant le paramètre.

Nommez vos collaborateurs selon le rôle.

Rapports

Code Smell 65 - Variables nommées d'après les types

Plus d'informations

Qu'est-ce qu'un nom exactement - Partie II Rehab

Crédits

Photo de Priscilla Du Preez sur Unsplash


Le code source final est la véritable conception du logiciel.

Jack Reeves


Code Odeur 100 - GoTo

GOTO était considéré comme nuisible il y a 50 ans

TL; DR : N'utilisez jamais GoTo.

Problèmes

  • Lisibilité
  • Code difficile à suivre

Solutions

  1. Remplacer GOTO par du code structuré
  2. Utiliser des exceptions

Le contexte

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.

Exemple de code

Mauvais

 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) }

Droit

 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) } }

Détection

  • [x] Automatique

Dans les langages supportant GOTO , nos linters peuvent nous mettre en garde contre son utilisation.

Mots clés

  • Lisibilité

Conclusion

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

Rapports

Code Odeur 12 - Nulle

Plus d'informations

Crédits

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 !