Maison > interface Web > Questions et réponses frontales > Comment lire le code source pour les débutants

Comment lire le code source pour les débutants

coldplay.xixi
Libérer: 2020-09-18 18:01:47
avant
2460 Les gens l'ont consulté

Comment lire le code source pour les débutants

Recommandations d'apprentissage associées : javascript

J'aime programmer, c'est aussi mon métier, et j'en suis très content pour pouvoir passer la plupart de votre temps à développer des logiciels. Comme beaucoup de programmeurs, j'étais à la fois fasciné et confus par la qualité du code que j'avais écrit et par la manière dont je pouvais l'améliorer.

Au fil des années, j'ai lu de nombreux articles et livres sur le développement de logiciels. Il existe de nombreux livres sur l'encre (dans des livres ou en ligne) qui vous expliquent comment améliorer la programmation et devenir un maître en programmation professionnellement formé comme un ninja ! La plupart de ces suggestions ont quelque chose en commun, dont la lecture du code source. Cependant, comparé à d'autres suggestions, la lecture du code source se résume généralement à une phrase simple : trouvez un excellent logiciel open source, ou tout autre logiciel que vous aimez, ouvrez-le (ou imprimez-le) et lisez-le. Bien qu’en général, il s’agisse effectivement d’une bonne suggestion, elle est superficielle sur le papier et pose de nombreux problèmes lorsqu’elle est réellement mise en pratique. Dans cet article, je vais essayer de donner quelques conseils pratiques sur la lecture du code source, mais avant cela, énumérons d'abord les problèmes.

Malentendus sur la lecture du code source

Lorsque les gens parlent de lecture du code source, l'impression générale que cela vous donne est qu'ils sont comme des maîtres en programmation qui peuvent simplement s'asseoir sur une chaise et lire comme un roman . Commencez avec le code. Eh bien, je suis sûr qu'il existe d'excellents programmeurs qui peuvent prendre plaisir à boire du café tout en regardant un tas de symboles mystérieux similaires à des phrases anglaises, et qui peuvent également construire toute la hiérarchie et la structure des classes dans leur esprit. Évidemment, cet article n'est pas pour eux. Son public est constitué de gens comme moi qui pensent que regarder une pile de code source, c'est comme regarder des exercices ennuyeux et dénués de sens. Bien sûr, on pourrait affirmer que l’on peut apprendre d’un projet complet en examinant une seule classe ou une seule fonction petit à petit, mais à mon avis, la plupart des logiciels dépendent en interne les uns des autres, à l’exception des problèmes les plus simples. Il est souvent impossible de comprendre les idées et les principes de conception derrière une fonction ou une classe spécifique sans comprendre le reste du système.

La question suivante est de savoir où obtenir un code source lisible (bien sûr, avant cela, vous devez être capable d'identifier quel code source vaut la peine d'être lu). Il existe de nombreux excellents logiciels, les logiciels open source sont disponibles gratuitement et les logiciels fermés nécessitent une licence. Les référentiels open source incluent Sourceforge et GitHub. Si vous travaillez pour une société de développement de logiciels, vous avez accès au code propriétaire dans le référentiel de code source. Une troisième approche courante consiste à utiliser des programmes qui accompagnent les livres de développement de logiciels ou sont proposés comme ressources pédagogiques (Minix en est un excellent exemple). En effet, la multitude d’options nous rend difficile le choix, donc trouver celle qui nous convient à lire dans le vaste monde du code est une tâche difficile mais essentielle.

Un autre problème est le langage de programmation utilisé dans le programme. Il est déjà assez difficile de lire le code des autres. Si vous devez également vous familiariser avec un nouveau langage mélangé à une syntaxe étrange, le fardeau que cela apportera sera trop lourd. beaucoup pour moi. Cela ressemble à un désastre qui apportera une grande frustration. Vous devez donc trouver du code écrit dans un langage que vous connaissez. Mais si le code que vous consultez provient d’un livre ou est fourni comme ressource pédagogique, peu importe que vous connaissiez la nouvelle langue car il existe des instructeurs qui peuvent expliquer le contexte. Si vous savez qu'il y a des tigres dans les montagnes, mais que vous préférez lire un langage de programmation inconnu sans l'aide d'un livre ou d'un tuteur, alors je suggère que vous deviez au moins l'apprendre et atteindre le point où vous pourrez écrire votre propre programme (Hello World, ça ne compte pas haha).

La question précédente sur le contexte m'amène à ma question suivante, il est beaucoup plus difficile de comprendre ce que fait le code si vous n'êtes pas familier avec le logiciel lui-même. Par exemple, si vous n'utilisez pas Linux tous les jours et connaissez la séquence de démarrage de Linux, il est difficile de déterminer quels sont les niveaux d'exécution après avoir examiné le code Linux. L'expérience et les connaissances acquises grâce à l'utilisation d'un certain logiciel peuvent nous aider à mieux lire son code source, y compris la terminologie couramment utilisée, les fonctions et caractéristiques du logiciel, et même les diverses erreurs que vous rencontrez.

Comprendre le code source

Pour moi, j'ai réalisé que « lire le code source » ne décrit pas avec précision les activités dans lesquelles je suis engagé, et « comprendre le code source » serait plus approprié . Il m'est très difficile de m'asseoir devant l'écran d'un ordinateur portable (ou de l'imprimer sur papier) et de simplement lire un écran rempli de code. J'ai besoin d'autres choses que du code. Par exemple, j'aime parcourir la documentation, jouer avec le logiciel, parcourir le code et même écrire du code de test pour l'exécuter, et je peux alors vraiment l'apprécier. Parce que je vais investir beaucoup de temps et d'énergie là-dedans, je dois être très sélectif et trouver les logiciels que je veux « lire » (comprendre).

Mon premier niveau de filtrage se fait par langage de programmation, pour moi je ne lis que le code des programmes écrits en C#, VB.NET, Python et Javascript (même si je connais aussi C++, Ruby et F#, mais je ne le fais pas) Je ne pense pas avoir le niveau nécessaire pour comprendre le code des autres). Ensuite, je recherche un logiciel que j'ai utilisé et qui me donne l'impression d'être déjà à bord parce que je connais l'intention du code et ce qu'il ne peut pas faire et quelles sont ses limites (si je le connais suffisamment) . Les logiciels open source que j'utilise au quotidien sont un excellent candidat (par exemple, j'utilise les outils open source Cruise Control.NET, NANT et NUnit écrits en C#)

Il arrive que je travaille sur un produit logiciel company (une société Microsoft), donc l'une des sélections de code source que j'ai lues était le code de notre entreprise dans le référentiel de code source. Si vous travaillez également pour un éditeur de logiciels, vous pouvez consulter d'autres projets ou même des versions antérieures du projet sur lequel vous avez travaillé. De cette façon, en plus de mieux comprendre votre code, vous aurez également une bonne idée de ce que vous avez essayé avant et après. Il y a cependant quelques mises en garde à noter :

  • Premièrement, si vous n’avez pas accès à d’autres projets, vous devez demander l’autorisation, car certaines entreprises prennent leur « propriété intellectuelle » très au sérieux.
  • Deuxièmement, la qualité de ces logiciels n'est peut-être pas aussi élevée que vous le pensez, car généralement, le code propriétaire n'a pas fait l'objet d'une analyse pas à pas aussi rigoureuse que le code open source. Il est important de noter que sans révisions régulières du code, la qualité du code peut être médiocre.
  • Troisièmement (celui-ci a été inspiré par les retours de mon ami), si votre entreprise développe des logiciels de gestion (RH, Finance, ERP, etc.), il y a beaucoup de relations commerciales qui doivent d'abord être comprises. . De plus, comme la plupart du code est influencé par des facteurs de fonctionnalité métier, il n'est généralement pas aussi modulaire qu'une application ou une API.

Recherchez des projets bien documentés (cela s'applique aussi bien au code open source qu'au code propriétaire). Ce que je veux dire, c'est qu'une telle documentation doit mettre en évidence la conception globale et expliquer la justification du code. S'il s'agissait simplement d'un document de type Java Doc généré automatiquement, il ne serait pas considéré comme la documentation que je décris :-). Une façon d'y parvenir consiste à utiliser des logiciels créés pour l'éducation (tels que Minix). Étant donné que leur objectif est d'enseigner via un logiciel, ils sont généralement très clairement documentés et contiennent de nombreux documents expliquant les principes de conception derrière le code.

Résumé

Alors, maintenant que vous avez identifié le logiciel dont vous souhaitez lire le code source et téléchargé son code source et sa documentation, lisons-le et comprenons-le étape par étape :

  • Parcourez la documentation de conception et essayez de comprendre comment le code est structuré. Les bons projets logiciels suivent certains modèles architecturaux qui déterminent l'organisation du code. Une fois que vous maîtrisez cela, la compréhension du code devient beaucoup plus facile. Si vous pouvez également dessiner des diagrammes de classes, vous pourrez mieux comprendre la disposition globale.
  • La prochaine chose à faire est de le compiler et de l'exécuter. Selon le projet et sa documentation, cela peut être facile ou difficile.
  • Il est maintenant temps d’ouvrir votre IDE préféré et de commencer à explorer. Un bon point de départ pour l’exploration est d’essayer de parcourir le code d’une fonctionnalité que vous connaissez. De cette façon, vous pouvez parcourir les différentes couches et sous-systèmes et comprendre comment ils sont liés. Par exemple, lorsque j'ai exploré NUnit, j'ai d'abord écrit un scénario de test, puis j'ai examiné les classes impliquées.
  • Essayez d'identifier les modèles de conception utilisés dans votre code. Si vous ne savez toujours pas ce que sont les modèles de conception, arrêtez immédiatement de lire cet article et lisez un livre classique sur les modèles de conception. Familiarisez-vous avec les modèles de conception, ils constituent un excellent moyen d’identifier et de comprendre la conception contenue dans un bon code. Une fois que vous vous y serez familiarisé, il sera plus facile de le garder à l’esprit lorsque vous lirez le code. Cela peut également vous aider à identifier plus facilement les ajustements subtils et les changements magiques apportés par l'auteur du code au modèle de conception d'origine.
  • Essayez d'écrire des cas de test pour votre code afin de bien le comprendre, c'est un moyen très utile de comprendre les dépendances entre les différentes parties de votre code. Avant d'écrire des cas de test, vous devez d'abord répondre à toutes les dépendances. Ensuite, découvrez les points d'entrée possibles et les valeurs de retour de votre code. Cela peut améliorer votre compréhension du code et vous aider à passer au niveau suivant.
  • Enfin, essayez de refactoriser votre code. À ce stade, vous êtes passé de la simple compréhension du code à celui de suffisamment familier pour pouvoir le modifier. À mesure que la complexité de la refactorisation augmente, votre compréhension augmentera également. À ce stade, vous pouvez contribuer votre propre code au projet si vous le souhaitez.

À mon avis, la « lecture du code source » est plus qu'une simple lecture, c'est un ensemble unique d'activités qui fonctionnent ensemble pour aider les gens à comprendre le code. Cela peut sembler plus intimidant que simplement « lire du code », mais cela en vaut la peine.

Maintenant, pouvez-vous « lire le code source » plus facilement et plus joyeusement ?

Si vous souhaitez en savoir plus sur la programmation, faites attention à la rubrique Formation php !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:juejin.im
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal