Code pur: causes et effets



Auteur: Victor Svirsky, développeur Python principal / chef d'équipe, DataArt

Combien de programmeurs, tant de définitions, qu'est-ce qu'un code propre. Lors des entretiens, j'entends souvent qu'un bon code est facile à lire. Je suis d'accord, mais comme mon expérience personnelle l'indique, ce n'est que la pointe de l'iceberg.

La première cloche qui nous dit que le code n'est plus propre est une augmentation du temps de développement de nouvelles fonctionnalités et une augmentation des étendues de régression au moindre changement dans le système. Cela est dû au fait que la dette technique s'accumule, les composants du système sont très étroitement liés et il n'y a pas d'autotests. Les raisons peuvent être:

  • Externe - comme la pression de l'entreprise et son désir d'obtenir plus rapidement de nouvelles fonctionnalités.
  • Interne - processus de développement et interaction mal développés au sein de l'équipe, manque de contrôle et de normes de développement ou manque banal de compétence.

Ne retardez pas les travaux sur la qualité du code et de l'architecture dans une longue boîte. Pendant le sprint, il est important de pouvoir séparer les tâches qui ont une valeur directe pour l'entreprise (tâches avec de nouvelles fonctionnalités) et les tâches techniques qui n'ont qu'un effet indirect sur l'entreprise. La proportion de séparation dépend de l'état actuel du projet, du calendrier et du nombre de mains libres.

Qu'est-ce qu'un code propre?


Il s'avère que le code est propre et que le système est conçu correctement, une lecture facile du code ne suffit pas. Il doit posséder d'autres qualités:

  • . . , . , , .
  • , , . , . . , . , .
  • . . . -, OWASP.
  • — , . , , . , , . , .
  • . , . , .

Afin d'éviter une évaluation subjective de la qualité de son code, le terme «code sent» ou «code stock» a été introduit en 1961. Il s'agit d'un groupe de règles et de recommandations qui définissent clairement s'il est temps de refactoriser. "L'odeur" conduit à la décomposition du code, et les développeurs doivent toujours s'efforcer de l'éliminer. Le besoin de refactoring découle directement de l'odeur du code, et en prévenant la cause, on peut éviter les conséquences. Vous pouvez en savoir plus sur les signes clés que vous devriez commencer à refactoring dans le livre de Martin Fowler «Refactoring. Amélioration du code existant. "

Dois-je écrire du code propre?


Ça vaut vraiment le coup! Mais pas toujours et pas partout, il vaut la peine d'accorder trop d'attention à la propreté.

N'oubliez pas l'utilité et la durée de vie de votre code. Par exemple, si vous êtes confronté à la tâche de développer un concept - PoC (Proof of concept), et que vous prouvez que la pile technologique sélectionnée exécute la tâche, votre code deviendra hors de propos dans une semaine ou deux. Cela ne vaut pas la peine d’améliorer cette fonctionnalité.

Selon certains, il n'est pas nécessaire de contrôler la qualité du code ou des parties du système qui seront bientôt remplacées. Et ce n'est pas vrai pour plusieurs raisons. Un travail de haute qualité rendra la transition ou l'intégration avec de nouvelles pièces plus facile, plus transparente et plus rapide. Cela simplifiera certainement la vie dans les cas où plusieurs versions du code doivent être prises en charge en même temps. Le nombre d'erreurs de régression avec un code propre sera plusieurs fois inférieur. N'oubliez pas non plus qu'il n'y a rien de plus permanent que temporaire. Peut-être la tâche d'améliorer cette partie du code pendant plusieurs mois résidera-t-elle dans l'arriéré.

Qu'est-ce qui vous aidera à améliorer votre code?


La plupart des programmeurs rêvent d'écrire du code rapidement et magnifiquement, pour que tout fonctionne parfaitement du premier coup. Mais tout le monde ne réussit pas à rendre le code non seulement fonctionnel, mais compréhensible. Comment réussir à écrire du code propre? Il y a deux façons: l'auto-organisation et le travail d'équipe.



Auto-organisation


Considérez plusieurs façons possibles d'améliorer la qualité du code individuel. Ces recommandations conviennent aux développeurs de tous niveaux.


  1. , — . — . IDE ( ) , , . IDE , . — .

    . , .
  2. open source
    . , . , . !

  3. , . . . , , 10, , . .

    . -, .

  4. . . . .

    . .


  5. . . - . , .

    — , , , , .


  6. , . — .
  7. !

    , .


La plupart des tâches sont résolues en équipe. Il est très important de partager la responsabilité de la qualité entre ses participants. Plus l'équipe est grande, plus il est difficile de maintenir le produit en bon état. Considérons plusieurs approches de rétention de code dans les conditions ci-dessus.

  1. Révision du code
    Il s'agit d'un principe simple de compréhension et d'exécution. Au moins deux personnes, dont l'auteur du code, vérifient le code.

    Il y a plusieurs choses à considérer lors de la vérification de votre code:

    • L'un d'eux consiste à vérifier si le code viole les règles de l'accord de code. Il s'agit d'un processus qui peut et doit être automatisé à l'aide d'analyseurs statiques en CI (intégration continue).
    • D'autres sont la maintenabilité du code et la gestion des erreurs qui ne peuvent pas être vérifiées automatiquement.
    • , , . , ?

  2. (Continuous integration)

    , .

    , :

    • . . , . , , .
    • , , .
  3. (Coding onventions)

    . , . , , .

    , , , . . , , . , . , . .

    , , . — , - .

    . , . .


  4. , . , , .

    , . , . , , .

    -. . , . . , .


  5. , , . . , .

    , :

    • ? , . , .
    • ?
    • ()?
    • ?
    • — ?

    , , . , .


  6. , . SonarQube. :



    • — . , . , .


    • , — DRY (Don’t repeat yourself).


    • . . . , .


    • , , , .


    • . , . , .

***


Les erreurs dans le code s'apparentent à une empreinte carbone. Il est totalement impossible de s'échapper, et un échappement excessif à lui seul ne tuera ni l'humanité ni sa nature environnante. Néanmoins, réduire l'effet négatif de son séjour sur la planète semble aujourd'hui un besoin naturel. De la même manière, l'écriture de code propre est la responsabilité de chaque développeur. Peu importe le chemin que vous choisissez, vous devez vous efforcer d'écrire du code fonctionnel et compréhensible.

Eh bien, si vous ne pouvez pas transformer la pureté en fétiche, étant donné la durée de vie de notre code et l'évaluation de la faisabilité d'autres améliorations. La principale chose à retenir sur les gens: les utilisateurs qui peuvent échouer, même une petite partie du système développé par nous, et les ingénieurs qui doivent prendre en charge ce système.

All Articles