5 pires pratiques de codage pour ruiner votre relation avec vos collĂšgues





Oui, vous ne vous trompez pas. Internet regorge dĂ©jĂ  d'articles avec de bonnes recommandations et des tutoriels pour les dĂ©veloppeurs. Vous pouvez en trouver un certain nombre sur mon blog . Cet article, excusez-moi, sera radicalement diffĂ©rent d'eux, mais en mieux ! Je vais parler de cinq pĂ©chĂ©s capitaux qui peuvent ĂȘtre commis dans le code. GrĂące Ă  ces pratiques dĂ©goĂ»tantes, quiconque doit travailler avec votre code vous dĂ©testera. Si vous ĂȘtes prĂȘt Ă  accepter cette connaissance secrĂšte, alors allons-y.



Mauvaise pratique n°1 : faire des énigmes avec des noms



Prenons quelque chose de simple pour nous réchauffer. Un bon point de départ est d'ajouter plus d'abréviations aux noms de variables et de fonctions. Je sais, je sais, tout le monde dit que les bons noms doivent décrire le but aussi clairement que possible. Eh bien, il y a handleFormSubmit , getUserConfiguration ou parseCustomerInformation . Mais nous ne poursuivons pas les bonnes choses.



Pour le pire des rĂ©sultats, essayez de raccourcir les mots et d'utiliser des acronymes aussi souvent que possible. Ensuite, le prochain dĂ©veloppeur devra rĂ©flĂ©chir pour comprendre ce que vous voulez dire. Voici quelques bons exemples : handleBtnClick , getConfig , parseInfo... Ils ne donnent pas trop d'informations, mais ils peuvent ĂȘtre facilement guidĂ©s Ă  travers l'inspection du code. De plus, des abrĂ©viations inutiles comme btn , func , config , cb contribueront Ă  compliquer la perception .



Et avec les noms des variables en gĂ©nĂ©ral, vous pouvez faire demi-tour. Avez-vous une liste d'utilisateurs non vĂ©rifiĂ©s ? Ne l'appelez pas uncofirmedUsers , juste des utilisateurs . Ensuite, le prochain dĂ©veloppeur sera obligĂ© de lire tout le code qui renvoie la variable afin de comprendre Ă  quoi cela sert. Aucun produit Ă  prix rĂ©duitpour ce pauvre garçon, un simple produit au nom lui suffira.



Si vous voulez ajouter un peu de piquant aux noms, vous pouvez jouer avec le registre. Des collĂšgues seront prĂȘts Ă  vous tuer, je vous le garantis. Au lieu de crĂ©er quelque chose dans l'esprit de readXmlDocument (c'est-Ă -dire en commençant les abrĂ©viations par une majuscule, comme des mots simples, selon les prĂ©ceptes des bonnes pratiques), vous pouvez toujours construire une mĂ©thode readXMLDocument que vous ne pouvez pas saisir immĂ©diatement et que vous devez lire il soigneusement.



Bien sĂ»r, les inspections de code peuvent essayer d'arrĂȘter toute cette folie, mais votre tĂąche est de vous battre. Peu importe pour quoi - Ă  cause du fait que vous ĂȘtes trop paresseux pour rĂ©gner, ou par dĂ©sir de prĂ©server votre rĂ©putation de bagarreur. Dans tous les cas, l'essentiel ici est de ne pas oublier : vous pouvez toujours promettre de tout changer pour la prochaine pull request et espĂ©rer qu'Ă  ce moment-lĂ , tout le monde sera pardonnĂ© et oubliĂ© (trĂšs probablement, cela arrivera).



Mauvaise pratique n°2 : Ecrire un code extrĂȘmement complexe



C'est ici que se trouve l'opportunitĂ© de prouver que vous ĂȘtes le vrai Rick Sanchez de la programmation. Vous avez juste besoin de rendre le code un peu plus intelligent que nĂ©cessaire. Vous pourrez peut-ĂȘtre gĂ©nĂ©raliser pour pouvoir utiliser trois lignes de code deux fois en crĂ©ant une mĂ©thode qui prend cinq paramĂštres. Vous voudrez peut-ĂȘtre rĂ©duire trois lignes de code Ă  une avec un opĂ©rateur d'imbrication ternaire intelligent. Laissez courir votre imagination!



Il deviendra bien sĂ»r plus difficile de lire et de maintenir le code aprĂšs cela. Mais ce sera sĂ»rement un casse-tĂȘte pour vos collĂšgues, et pas pour les vĂŽtres ? Alors c'est super.



Alors allez, montrez que vous ĂȘtes un vrai hacker. Je vous conseille d'utiliser le chaĂźnage de mĂ©thodes, les conditionnels imbriquĂ©s, les modĂšles de conception gonflĂ©s et les lignes simples qui tirent le meilleur parti possible des fonctionnalitĂ©s de niche du langage hipster. AprĂšs tout, pourquoi Ă©crire Date.now () si vous pouvez obtenir le mĂȘme rĂ©sultat avec le + new Date () un peu plus mystĂ©rieux ? Je suis sĂ»r que les autres participants au projet s'attarderont sur le code avec un grand sentiment de gratitude, essayant de comprendre ce qui se passe en gĂ©nĂ©ral.



Et n'oubliez pas : plus vous ĂȘtes sage et sur-optimisez dans le code, plus ce sera difficile pour vos collĂšgues plus tard. Vous obtenez dix points pour chaque fonction de rĂ©duction et cent pour chaque appel rĂ©cursif. À la fin du projet, Ă  un tel rythme, vous deviendrez de vrais professionnels, ce dont je vous fĂ©licite.



Mauvaise pratique trois : importer autant que possible



J'admets : des problĂšmes avec la technique prĂ©cĂ©dente peuvent survenir lors de l'Ă©tape d'inspection du code. Mais d'un autre cĂŽtĂ©, si vous Ă©crivez en JS ou PHP, vous aurez tout un tas d'instructions import/use au dĂ©but de presque chaque fichier. De nombreux dĂ©veloppeurs ne les regardent mĂȘme pas lors de l'inspection, ils passent immĂ©diatement Ă  ce qu'ils considĂšrent comme la pulpe elle-mĂȘme. C'est pourquoi les dĂ©pendances sont l'occasion idĂ©ale de crĂ©er de l'horreur dans votre code. Imaginez



que vous ayez une vue UserSubscriptions dans une application React. Vous crĂ©ez un fichier avec la fonction d'assistance calculateTimeToSubscriptionEnd... À la perfection. Mais oĂč le placer ? Dans un rĂ©pertoire sĂ©parĂ©, oĂč tout est stockĂ©, Ă  partir duquel se construit la logique de domaine des abonnements et des paiements ? Bien sĂ»r que non. Mettez-le mieux Ă  cĂŽtĂ© de la vue que vous venez de crĂ©er.



C'est ainsi que vous envisagez l'avenir, car lorsque vous avez enfin le panneau d'administration (et dans celui-ci - afficher les abonnements ), rien ne peut vous empĂȘcher d'importer la fonction d'assistance Ă  partir de vues personnalisĂ©es. Et personne ne le remarquera probablement, car personne ne se soucie de l'importation. Cela reliera deux modules complĂštement Ă©trangers et crĂ©era un enfer sur terre pour quiconque essaie de refactoriser ou d'apporter des modifications. Croyez-moi, rien ne rendra fou un dĂ©veloppeur plus vite qu'un projet avec une structure terrible.



Vous pourriez dire : « Eh bien, ce n'est pas grave non plus Â». Les dĂ©veloppeurs inexpĂ©rimentĂ©s n'essaieront pas de rĂ©parer quelque chose pendant longtemps. Ils souffriront de cette confusion par conviction que, probablement, il ne faut rien toucher ici. Chaque nouvelle tentative pour comprendre la structure de l'application causera des souffrances. Et si quelque chose liĂ© Ă  la fonction est mis Ă  jour ou supprimĂ©, cela deviendra encore pire. La confusion n'est pas grande, mais tout le monde en souffrira jusqu'Ă  ce qu'il y ait un hĂ©ros qui arrangera tout. C'est peut-ĂȘtre mĂȘme vous.



QuatriĂšme mauvaise pratique : Ă©crire des comportements diffĂ©rents pour les mĂȘmes fonctions



Vous considérez-vous comme une personne créative et artistiquement douée ? Alors voici une idée de torture que vous adorerez.



Le monde est un endroit imprĂ©visible, et personne n'a jamais dit que tout fonctionnerait selon le mĂȘme principe. Et que la cohĂ©rence et la prĂ©visibilitĂ© sont la clĂ© du travail productif du dĂ©veloppeur et de la rĂ©ussite du projet, personne ne l'a dit non plus... Je veux dire, beaucoup l'ont dit, mais aujourd'hui on ne les Ă©coute pas. Nous avons l'intention de gĂącher la journĂ©e de quelqu'un en lançant des fonctions similaires dans leur base de code qui se comportent lĂ©gĂšrement diffĂ©remment.



Par exemple, supposons que vous ayez une fonction de validation qui renvoie true si les donnĂ©es sont valides et un message d'erreur si quelque chose ne va pas. Que faire si le prochain validateur renvoie falseou indĂ©fini pour les donnĂ©es valides ? Tout projet visant Ă  prĂ©ciser clairement la validation des donnĂ©es du formulaire s'effondrera. C'est bon.



Ou, disons, vous pouvez accepter des arguments dans chaque fonction dans un nouveau format. Supposons que l'un accepte les ID utilisateur et que l'autre n'accepte que l'objet entier dans son ensemble (mĂȘme si en fait seul l'ID est nĂ©cessaire). Ou peut-ĂȘtre pouvez-vous demander l'adresse e-mail de l'utilisateur ? Cela gĂąchera le sang du dĂ©veloppeur qui se verra remettre votre code.



Je suis sĂ»r que vous trouverez des moyens encore plus ingĂ©nieux de surprendre vos collĂšgues - vous pouvez tout rendre imprĂ©visible. A bas la cohĂ©rence, vive l'arbitraire ! Et encore une chose : ne pensez jamais au niveau de la base de code dans son ensemble, essayez d'ajouter quelque chose d'intĂ©ressant Ă  chaque fichier sĂ©parĂ©ment. En d'autres termes, soyez un artiste, pas un ingĂ©nieur. Les autres dĂ©veloppeurs de l'Ă©quipe vous dĂ©testeront de tout leur cƓur - parce que, bien sĂ»r, vous Ă©tiez en avance sur votre temps.



Mauvaise pratique n°5 : tout copier



Si vous donnez vie à cela, votre code ne sera certainement touché par personne. Ne divisez pas la logique commune entre différentes fonctions, classes ou composants. Copiez et collez simplement les lignes souhaitées d'un fichier à l'autre. AprÚs tout, votre code est trÚs précieux et sans faille, laissez les gens l'admirer tout au long du projet. Qu'il brille !



Cependant, ce n'est pas la seule raison de la duplication. En cas de mises Ă  jour, les dĂ©veloppeurs devront apporter des modifications Ă  plusieurs fichiers Ă  la fois. De plus, si quelqu'un rate un ou plusieurs cas de logique de copie (et si les tests du projet sont serrĂ©s, quelqu'un le ratera certainement), alors il devra re-punch le code une deuxiĂšme voire une troisiĂšme fois. Quoi de plus amusant que de rechercher des morceaux en double dans des centaines de fichiers de votre base de code ? Je suis sĂ»r que vos collĂšgues l'apprĂ©cieront.



N'oubliez pas que l'abstraction est difficile et prend du temps Ă  bien faire, alors ne vous en souciez pas - copiez simplement le code selon vos besoins. Lors des inspections de code, cela sera traitĂ© avec comprĂ©hension. Sinon, vous pouvez passer le temps gagnĂ© Ă  expliquer pourquoi votre code inestimable doit ĂȘtre reproduit. Tout s'arrangera, je crois en toi.



Bon, d'accord, Satan m'appelle ici, complétez.



Bien sûr, c'est un article de blague. Ne faites pas ce que j'ai écrit ici (sérieusement, non, je ne dilue pas faiblement). Faites l'inverse :



  • assurez-vous que les titres sont clairs et informatifs ;
  • Ă©crire un code simple et comprĂ©hensible pour tout le monde ;
  • crĂ©er une structure de projet claire ;
  • n'oubliez pas la cohĂ©rence et la prĂ©visibilitĂ© des interfaces ;
  • partager une logique commune dans la mesure du possible sans compromettre la clartĂ©.


Oui, et ne mettez jamais vos collĂšgues en colĂšre. Il y a un dicton dans la communautĂ© des dĂ©veloppeurs : Ă©crivez du code comme si un tueur en sĂ©rie continuerait Ă  travailler avec. Personne ne veut ruiner une relation avec un tueur en sĂ©rie, n'est-ce pas ? C'est la meme chose. Mais je n'aime pas cette logique. Il me semble qu'il vaut mieux Ă©crire le code comme si vous continuerez vous-mĂȘme Ă  travailler avec. Demandez-vous simplement : « J'aimerais trouver ce fragment aprĂšs avoir oubliĂ© pourquoi je l'ai Ă©crit ? Â»



All Articles