[RUBY] Technologie de lecture du code source (cheet sheet)

1. Vue d'ensemble

D'après ce que j'entends, 80% du travail est le temps de lire le code source. Cependant, malgré l'échelle de 80%, il n'y a aucune impression qu'il y ait une discussion active sur la façon de lire le code source, et il existe également des sites Web et des livres qui résument comment lire le code source systématiquement et dans l'ordre. Peu. Bien que je me posais la question, j'avais lu le code source pendant longtemps en me référant à la façon de lire à l'aide d'un débogueur, au contenu du code lisible et aux articles Web.

Cependant, les informations sur la méthode de lecture du code source étaient dispersées dans l'application mémo, et je sentais que la technologie de lecture du code source n'était pas systématiquement acquise pour toujours. Par conséquent, dans cet article, nous avons compilé une aide-mémoire sur la manière de lire efficacement le code source à partir de divers documents, quels que soient les supports tels que les livres, les articles Web et YouTube. Le but de la création d'une feuille de triche est «de faciliter le retour en arrière et de répéter longtemps» et «d'organiser systématiquement les connaissances sur la lecture du code source et de faciliter la récupération des informations en centralisant les informations». y a-t-il. De plus, le langage utilisé dans cet article est Ruby, qui m'est familier.

2 Hiérarchie dans la lecture de code

La lecture du code comprend les couches suivantes.

sourcecode-reading-knowledge-group.png

Définissez les numéros de série comme suit.

  1. Chaque ligne écrite comme code source
  2. Grammaire de base
  3. Structure de la bibliothèque
  4. Modèle de conception, structure de données / algorithme, paradigme / principe
  5. IDE (outil de développement), débogueur (outil de débogage), environnement d'exécution
  6. Règles d'équipe
  7. Connaissances commerciales / exigences commerciales / exigences non fonctionnelles (ce que vous voulez réaliser)

La lecture à l'image de ce «groupe de connaissances qui constitue l'acte de lecture de code» est de 1 → 7 en terme de numéro de série. La lecture des détails à l'ensemble s'appelle la lecture de code.

Cependant, il s'agit d'une méthode de lecture lorsque vous avez fini de comprendre le programme dans une certaine mesure, et dans le cas d'une erreur ou le premier jour de participation au projet, 7 → 5 → 6 → 4 → 3 → 2 → 1 (je lis dans cet ordre) Cependant, je pense que la lecture de l'ensemble jusqu'aux détails comme (le style est gratuit) convient pour saisir le programme. Par conséquent, dans cet article, nous décrirons dans l'ordre en supposant une erreur ou en lisant le code source le premier jour de participation au projet.

En passant, je pense que le «groupe de connaissances qui constitue l'acte de lecture de code» est un excellent chiffre en ce que la méthode de lecture du code source est stratifiée et classée.

Ensuite, j'expliquerai en détail la technologie de lecture du code source du prochain article.

3 Réglage de l'objectif

Le programme à lire a été décidé. Que fais-tu maintenant? Si vous venez de lire à partir de main sans aucune politique, vous ne comprendrez pas ce que le code essaie de dire. Tout d'abord, définissez clairement l'objectif de la lecture du code et concentrez-vous dessus. Même lorsque vous devez tout lire, divisez le chemin et lisez chaque partie. (* 1)

** ⑦ Connaissances commerciales / exigences commerciales / exigences non fonctionnelles (ce que vous voulez réaliser) ** dans l'image ci-dessus correspondent à cela. "Pour résoudre l'erreur" et "pour comprendre le projet" sont applicables, et plus précisément, "Je veux résoudre le problème parce qu'il est devenu NoMethodError" et "Je veux implémenter la fonction similaire" sont définis comme objectif.

À propos, l'auteur divise les connaissances acquises par le travail et l'auto-apprentissage au quotidien en exigences fonctionnelles et exigences non fonctionnelles et les stocke sous forme de feuille de triche afin d'atteindre rapidement l'objectif. Je veux créer une fonction de recherche! Lorsque vous pensez (), reportez-vous à l'exigence fonctionnelle this et souhaitez changer la colonne! Quand vous pensez, référez-vous à l'exigence non fonctionnelle this. Si vous enregistrez une erreur à laquelle vous êtes accro une fois dans le format de feuille de triche, vous pouvez vous référer à l'URL deux fois sans aucun problème lorsque vous rencontrez la même erreur. Cela conduit également à une stabilité psychologique.

Pour le moment, j'utilise un véritable bloc-notes iOS et InkDrop pour créer une feuille de triche, et lorsque je la sortie vers l'extérieur, j'utilise des blogs et Qiita. Il est très bon que le code source qui semble être bon à lire comme OSS puisse être réutilisé en le stockant dans GitHub un par un.

Exemple de feuille de triche

4 Analyse dynamique

En gros, les méthodes d'analyse peuvent être classées en méthodes statiques et en méthodes dynamiques. La méthode statique consiste à lire le code source lui-même. La méthode dynamique consiste à suivre le mouvement au moment de l'exécution à l'aide d'un débogueur ou autre. Fondamentalement, il est préférable de commencer l'analyse par une analyse dynamique. L'analyse statique est plus ou moins prédictive du comportement d'un programme. En revanche, c'est un fait à voir par analyse dynamique. Il est plus facile d'obtenir des directions et de réduire les erreurs si vous regardez d'abord les faits. Est-ce similaire à prendre un profil avant d'optimiser? On peut dire que le cas est résolu d'abord à partir de la scène. (* 1)

Il semble. Par conséquent, nous expliquerons à partir de la méthode dynamique.

De plus, dans cet article, l'analyse dynamique est effectuée dans le but de "résoudre les erreurs", mais le code source est également analysé dynamiquement dans le but de "comprendre le projet". Veuillez convertir la partie "Si une erreur se produit" en "Si vous trouvez le code source qui vous tient à cœur dans le projet" selon le cas.

4.1 Utiliser le débogueur

Je pense que la programmation Web, c'est quand le client envoie une demande avec des paramètres, la traite côté serveur et répond au client. Parfois, la valeur est extraite de la base de données en référence à la valeur du paramètre, traitée côté serveur et répond au client. En d'autres termes, la programmation Web est un tournoi de relais de seau et un tournoi de course de relais. L'eau dans le seau et la tâche sont devenues de simples variables. Et l'erreur se produit car la valeur de la variable est différente de l'attente ou la règle du tournoi n'est pas logique.

Le débogueur analyse quel point dans le flux du relais de compartiment provoque une erreur. L'emplacement de l'erreur qui correspond à l'objectif déterminé dans "1 Définition de l'objectif" ci-dessus est déterminé à partir du navigateur, de l'URL et de la trace arrière, et le dossier et le fichier correspondants sont recherchés dans le fichier de projet par analogie en utilisant le nom donné. Faire. Ce faisant, le nom de fichier, le nom de la fonction, le nom de la variable, le nom du type et le nom du membre qui lui ressemblent sont spécifiés, et un débogueur est inséré à un point spécifique pour saisir le flux des variables.

En utilisant un débogueur, un programme qui a été reconnu dans le cerveau comme une information de caractère statique peut être reconnu dans le cerveau comme un paysage dynamique à la fois. Personnellement, je ressens quelque chose de proche de l'impression lorsqu'une image d'il y a 80 ans est soudainement devenue un film et a commencé à bouger. Le cerveau droit et la perception spatiale peuvent être utilisés en appréhendant le programme comme une image. Puisque le flux de traitement peut être stocké dans le cerveau droit, qui a une grande capacité de stockage, le code source peut être analysé dans le cerveau gauche vacant.

S'il s'agit d'un IDE, utilisez le débogueur intégré aux IDE Eclipse ou JetBrain. Sinon, Ruby doit utiliser une bibliothèque tierce telle que byebug ou pry.

4.2 Notez le flux de processus du code source en japonais ou dans une figure.

En 4.1, j'ai lu la trace arrière et utilisé le débogueur pour comprendre le flux de traitement du code source. Après avoir saisi le flux de traitement, écrivez le contenu saisi en japonais ou dans une figure dans un mémo.

Pourquoi "remplacer le flux de processus du code source par le japonais et prendre note"? Il y a deux raisons.

Le premier est "parce que le code source est abstrait".

Je pense que déchiffrer le code source, c'est mettre le concept abstrait dans le concept concret. Un génie ou un ingénieur avec une longue expérience de travail peut comprendre l'abstraction telle qu'elle est et l'utiliser, mais je suis une personne ordinaire avec peu d'expérience professionnelle en programmation. Par conséquent, je pense qu'incorporer un concept abstrait dans un concept concret et prendre des notes en japonais est un facteur important en termes d'efficacité de travail, d'apprentissage et de stockage externe de la pensée. Par conséquent, il est important de «remplacer le flux de traitement du code source par le japonais et de prendre note».

Le second est «parce que le code source est écrit en anglais».

Tout d'abord, nous sommes japonais. J'utilise le japonais depuis 24 heures. Ce qui est écrit en japonais peut être compris en 0 seconde et l'image est facile à comprendre. Malheureusement, le code source est en anglais. Je ne connais pas l'anglais, qui n'est pas ma langue maternelle. Même si vous dites Girafe en anglais, vous ne pouvez pas le comprendre tout de suite, mais si vous dites Kirin en japonais, vous pouvez imaginer une girafe animale dans votre tête en 0 seconde. En d'autres termes, la signification des mots écrits en anglais ne peut pas être comprise en 0 seconde et la mémoire d'image est plus difficile qu'en japonais. Par conséquent, il est important de décrire le flux du code source abstrait écrit en anglais dans une note de service en japonais ou dans un diagramme en termes d'accélération du travail.

Si vous voulez comprendre le code source tel qu'il est en anglais, vous devez prendre consciemment l'habitude de comprendre l'anglais en anglais et de développer votre cerveau anglais. Cependant, je pense qu'il faudra probablement beaucoup de temps pour apprendre l'anglais. Surtout pour l'écriture. De plus, comme j'apprends souvent la programmation et le marketing, je ne peux pas consacrer mes ressources à l'anglais. Par conséquent, il est important de se dépêcher de convertir le programme écrit en anglais en japonais et d'écrire et d'organiser le flux de traitement en séquence.

Pour les raisons ci-dessus, il est important de décrire le flux de traitement du code source en japonais ou en chiffres. En fait, j'ai préparé la troisième chose, "un point où vous pouvez comprendre le flux de traitement à vol d'oiseau", mais j'ai omis la description parce que je ne savais pas comment écrire les phrases détaillées.

4.3 Vérifier le comportement de la partie d'erreur

J'ai pu saisir l'emplacement de l'erreur dans la version 4.1 et l'ensemble du flux de traitement dans la version 4.2.

Je pense que le débogage est un acte de test d'hypothèse que "à un certain processus (ligne), l'état des données devrait être comme ça".

Si vous lisez le message d'erreur, vous pouvez avoir une idée générale de la raison pour laquelle la partie d'erreur ne fonctionne pas, mais il y a des moments où vous ne comprenez pas pourquoi cela ne fonctionne pas. Dans un tel cas, l'erreur peut être résolue en utilisant la méthode suivante. Dans 3.3, [Introduction à Ruby pour ceux qui souhaitent devenir des professionnels](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%92%E7%9B%AE] % E6% 8C% 87% E3% 81% 99% E4% BA% BA% E3% 81% AE% E3% 81% 9F% E3% 82% 81% E3% 81% AERuby% E5% 85% A5% E9 % 96% 80-% E8% A8% 80% E8% AA% 9E% E4% BB% 95% E6% A7% 98% E3% 81% 8B% E3% 82% 89% E3% 83% 86% E3% 82% B9% E3% 83% 88% E9% A7% 86% E5% 8B% 95% E9% 96% 8B% E7% 99% BA% E3% 83% BB% E3% 83% 87% E3% 83% 90% E3% 83% 83% E3% 82% B0% E6% 8A% 80% E6% B3% 95% E3% 81% BE% E3% 81% A7-Software-Design-plus% E3% 82% B7% Je me suis référé au chapitre 11 de E3% 83% AA% E3% 83% BC% E3% 82% BA / dp / 4774193976). Puisqu'il s'agit d'un livre célèbre, si vous êtes un utilisateur expérimenté de Ruby, vous l'avez peut-être entendu une fois, mais il est important de supprimer la grammaire de base de of «Groupe de connaissances qui constitue l'acte de lecture de code», donc si vous êtes intéressé, veuillez le lire. Ma MONTRER L'HEURE.

4.3.1 Résoudre par vous-même

① Lisez le message d'erreur

Copier et googler le message d'erreur résoudra la plupart des problèmes.

② Lisez la trace arrière

En gros, le backtrace peut être utilisé pour savoir où une méthode a été appelée à partir de "données représentant l'état d'appel de la méthode". En parlant de rails, utilisez Application Trace.

③ Vérifiez le journal

Il semble que certains frameworks tels que Rails produisent des journaux.

④ Vérifiez la progression du programme

Aperçu

Ma conjecture et le comportement de traitement réel sont-ils corrects? Je veux savoir où se trouvent l'estimation de la variable et l'écart réel.

Méthode

  1. Vérifiez les variables en effectuant le débogage d'impression ou le débogage de l'enregistreur
  2. Mettez tap dans la chaîne de méthodes et vérifiez les variables 3.Faites un point d'arrêt et vérifiez les variables avec le débogueur standard Byebug ou IDE

⑤ Essayez-le de manière interactive.

Cette opération est effectuée lorsque le comportement de la méthode est différent de ce que vous attendiez ou lorsque vous souhaitez vérifier le comportement de la bibliothèque.

Méthode

  1. Exécutez du code simple avec irb
  2. Si l'erreur est dérivée de l'infrastructure, reproduisez la partie d'erreur avec l'échafaudage.

⑥ Lisez le code de la bibliothèque

Si vous voulez savoir quel est le comportement de la bibliothèque externe, ou si c'est la cause du dysfonctionnement de la bibliothèque externe en raison de la mise à niveau de la version, etc., vous devez aller au code de la bibliothèque. Puisque Ruby est un langage de script, les bibliothèques nécessaires à son exécution devraient être à portée de main en tant que code Ruby. Le reste peut être trouvé en utilisant la méthode source_location de la classe Method pour trouver l'emplacement de la bibliothèque à partir du projet. Si la valeur de retour est nil (implémentée en langage C), il s'agit souvent d'une méthode de la bibliothèque standard de Ruby.

De plus, le code source de la bibliothèque est souvent excellent en tant que code source, donc si vous apprenez à l'écrire et à le stocker dans GitHub, etc., vous pouvez le réutiliser et améliorer vos compétences techniques.

⑦ Écrivez le code de test

mérite

  1. Gagnez du temps sur le débogage
  2. Peut être utilisé à la place de la documentation qui garantit que la logique des programmes que vous avez créés n'est pas rompue
  3. Vous pouvez gérer de manière proactive les erreurs inattendues qui ne sont pas reconnues par vos propres pensées.

Méthode

Voir le cadre de test pour chaque langue.

⑧ Éloignez-vous de l'ordinateur

Aller aux toilettes, acheter des boissons, faire une promenade, faire de l'exercice, faire une sieste, manger du riz, prendre un bain, se coucher tôt.

Cela peut résoudre le problème qui sévit depuis plusieurs heures en raison de la visibilité ouverte.

4.3.2 S'appuyer sur les autres

① Document interne et officiel

Puisque les deux sont des informations primaires, je pense qu'ils peuvent résoudre le problème de manière précise et sûre.

② Reportez-vous aux informations sur le net

Reportez-vous à Qiita et aux blogs personnels.

③ Rechercher un problème

Il semble y avoir un service de suivi des problèmes (je l'ai appris pour la première fois). Je ne comprends pas toute la phrase en anglais, mais comme il s'agit d'un problème officiel, je pense que si vous le mettez dans un coin de votre tête comme option de résolution d'erreur, vous pouvez résoudre le problème avec précision et sûrement en cas de problème.

④ Demandez à quelqu'un (ouvrier, teratail)

Personnellement, si je ne comprends pas après avoir enquêté pendant un certain temps, c'est ma limite pour le moment, alors je voudrais demander aux gens après avoir résumé les principaux points. Cependant, c'est aussi une méthode de résistance car c'est souvent un visage amer.

5 Analyse statique

5.1 Lire la documentation

Ne lisez pas le code source en premier lieu

Je pense que je vais perdre si je lis le code source.

Manuels de référence, documents Documents et matériaux liés à la conception Il devrait y avoir beaucoup de bonnes choses écrites en langage naturel, alors lisez-les d'abord.

Si vous ne pouvez pas compter sur eux, ou s'ils ne vous aident pas, lisez le code. Néanmoins, nous insistons sur la dénomination des commentaires et des identifiants, et essayons d'abord de les interpréter de manière aussi significative que possible.

Dans le cas où il n'y a pas de commentaires et que le nom de la variable est approprié, il n'y a aucune aide pour cela. Vous ne pouvez rien faire d'autre, alors jetons un coup d'œil à la logique du code.

C'est un problème à lire, c'est donc la première chose que vous ne voulez pas faire si vous le pouvez. Pensez à des moyens d'éviter de le faire autant que possible.

Si vous êtes un débutant, vous ne pourrez souvent pas progresser en raison d'un manque de capacité de lecture, et à moins que vous ne soyez sous pression pour le faire, vous devriez dire: "Vous devriez améliorer un peu plus votre lecture de code."

Le prédécesseur aurait dû quitter le document, alors lisez-le. https://teratail.com/questions/147782

Ceci est également similaire à la section précédente, alors connaissons d'abord les spécifications. Aussi, s'il y a un document qui explique la structure interne, je veux vraiment le voir. Vérifiez s'il existe des fichiers avec des noms tels que "HACKING" et "TOUR".

Il correspond à la ** ⑥ règle d'équipe ** dans le «groupe de connaissances qui constitue l'acte de lecture de code». Le prédécesseur ayant pris le temps de laisser le document en langage naturel et en chiffres, il est préférable de lire d'abord le document s'il y en a un.

5.2 Compréhension de la structure et de la conception

Il correspond au ** ④ design pattern, structure de données / algorithme, paradigme / principe ** dans "groupe de connaissances qui constitue l'acte de lecture de code".

5.2.1 Lire la structure des répertoires

Voir comment le répertoire est divisé. Obtenez un aperçu de la façon dont le programme est conçu et de ses parties. Voyez comment chaque module est lié.

5.2.2 Lire la structure des fichiers

Tout en regardant la fonction (nom) contenue dans le fichier, voyez comment le fichier est divisé. Le nom du fichier est comme un commentaire sans relâche et doit être noté.

Je voudrais également faire un point sur les règles de dénomination des noms de fonctions. La plupart des programmes C utilisent des préfixes pour la fonction externe, qui peuvent être utilisés pour identifier le type de fonction. De plus, dans un programme orienté objet, les informations d'affiliation de fonction peuvent être incluses dans le préfixe, qui est une information précieuse. (Exemple: rb_str_push)

5.2.3 Comprendre la relation d'appel entre les fonctions

Les informations les plus importantes après le nom de la fonction. Ceci est important, surtout si vous disposez d'un grand nombre de fonctions. Je veux utiliser l'outil pour cela. Il est préférable que vous disposiez d'un outil capable de créer un diagramme, mais si vous n'en avez pas, vous n'avez besoin que de dessiner les parties les plus importantes, c'est donc une bonne idée de dessiner le diagramme vous-même. Vous n'avez pas à élaborer sur le diagramme, il suffit donc de le dessiner grossièrement sur le papier de support.

En passant, un diagramme de la relation entre ces appels est parfois appelé un graphe d'appel. Le graphe d'appel statique est un diagramme des relations d'appel écrites dans le code source tel quel, et le graphe d'appel dynamique est un diagramme qui ne représente que les fonctions qui ont été appelées lorsqu'il a été réellement utilisé. graphe d'appel).

Cependant, il semble que dans les phrases japonaises, "graphe d'appel" se réfère implicitement au graphe d'appel dynamique, et graphe d'appel statique est souvent appelé "relation d'appel de fonction". Cependant, il est plus facile de comprendre s'il est associé à statique et dynamique, je l'appelle donc graphique d'appel dynamique / graphique d'appel statique.

Je pense que j'ai vu le graphe d'appel comme l'une des fonctions d'Eclipse lorsque je faisais Java. Même si je le recherche dans "Ruby Call Graph" ou "vscode Call Graph", il n'apparaît pas et je ne connais pas les détails en détail, donc je vais le mettre dans le coin de ma tête pour le moment. Si vous voulez savoir, veuillez rechercher.

5.2.4 Modèle de conception

Un modèle de conception est «un modèle d'une conception couramment utilisée dans l'orientation objet» et «une solution à un problème similaire qui se rencontre plusieurs fois». En connaissant le modèle de conception, vous pouvez profiter des avantages suivants lors de la lecture et de l'écriture du code source.

mérite

  1. Programme hautement réutilisable
  2. Créer efficacement des structures de haute qualité
  3. Excellente maintenabilité grâce à une lisibilité élevée
  4. Si vous connaissez le modèle de conception, vous serez en mesure de lire l'intention de conception, de sorte qu'il sera plus facile à maintenir lors de la prise en charge.
  5. En se retournant et en connaissant le modèle de conception, la communication entre les développeurs devient fluide.

Résumé des modèles de conception du GoF

Matériau du modèle de conception utilisant Ruby comme exemple

Modèle de conception pour les gens ordinaires par les gens ordinaires Act 1 Public

5.2.5 Algorithme et structure des données

Un programme, c'est comme gagner une autre moitié si vous savez à quoi ressemble la structure des données. Lors de l'écriture de code, il est beaucoup plus utile d'expliquer la structure des données (uniquement) que de commenter le code un par un. (Et c'était écrit dans un livre, qu'est-ce que c'est?)

  • Ajout: C'était une "méthode d'écriture de programme". Ce qui suit est extrait de la page 168 du même livre. «L'un des moyens les plus efficaces d'expliquer un programme est d'expliquer simplement en détail comment répartir les données. Quelles sont les valeurs possibles pour les principales variables? Si vous expliquez comment cela change, vous pouvez dire que l'explication du programme a beaucoup avancé. " À propos, le livre original de ce livre a été publié en 1974.

  • Addendum 2: J'ai trouvé un commentaire similaire dans "C Programming Diagnosis Room". Ce qui suit est cité à partir de la page 78 du même livre. "Interdisons l'organigramme. L'organigramme n'est pas bon car il peut écrire le flux de contrôle". Le programme est destiné au traitement des données et le flux de contrôle change en fonction de la différence des données. Jusqu'au dernier, les données sont le sujet principal. La facilité de programmation est grandement améliorée selon la façon dont les données telles que les variables et les arguments sont définies. Un diagramme de ce à quoi ressemble la structure des données est beaucoup plus utile qu'un organigramme. Notez la signification des données. "

Discours silencieux. Bien sûr, si vous souhaitez créer une structure de données en C, vous devez utiliser struct ou union. Ces structures importantes sont souvent définies dans les fichiers d'en-tête. Bien sûr, la structure interne peut être définie en .c, et certaines structures de données sont construites dynamiquement, donc à la fin vous ne le saurez pas tant que vous n'aurez pas lu la fonction. Néanmoins, vous devez d'abord lire le fichier d'en-tête. Le nom du fichier est également important lors de la lecture du fichier d'en-tête. Par exemple, s'il y a un fichier appelé frame.h dans le système de traitement du langage, c'est probablement la définition du frame de pile.

Concentrez-vous sur les membres de la structure lors de la prédiction des structures de données. S'il y a un pointeur suivant dans la définition de la structure, vous pouvez imaginer qu'il s'agit d'une liste de liens. De même, s'il y a des éléments tels que parent, enfants et frère, c'est un arbre sur dix.

Je n'ai aucune expérience pratique des algorithmes et des structures de données, je ne sais donc pas comment les utiliser. Apparemment, il est souvent utilisé lors de l'analyse de Big Data. On pense que la compréhension de la littérature sera approfondie en lisant ce qui suit.

STEP1

[26 algorithmes visibles dans le livre d'images de l'algorithme](https://www.amazon.co.jp/%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA% E3% 82% BA% E3% 83% A0% E5% 9B% B3% E9% 91% 91-% E7% B5% B5% E3% 81% A7% E8% A6% 8B% E3% 81% A6% E3 % 82% 8F% E3% 81% 8B% E3% 82% 8B26% E3% 81% AE% E3% 82% A2% E3% 83% AB% E3% 82% B4% E3% 83% AA% E3% 82 % BA% E3% 83% A0-% E7% 9F% B3% E7% 94% B0% E4% BF% 9D% E8% BC% 9D-ebook / dp / B07179Q3MJ)

App "Algorithm Picture Book"

Académie Waku Waku (YouTube)

STEP2

AtCoder: le plus grand site du Japon pour l'organisation de concours de programmation compétitifs

Faites-moi savoir si vous avez d'autres recommandations!

5.3 Comprendre la signification du code source

5.3.1 Lire mot par mot

À quels fichiers, fonctions (méthodes), types (classes), variables, variables membres et mots réservés le mot figurant dans le code source fait-il référence? Savoir écrire.

① Fichier

Pour les frameworks tels que Rails, il existe des conventions de dénomination. Le nom du fichier peut être utilisé pour déduire dans une certaine mesure le rôle qu'il joue dans le logiciel.

② Types de fonctions (méthodes)

Méthodes de la bibliothèque standard (classes initialement incluses dans Ruby, Rails, etc. et leurs méthodes associées car elles sont fréquemment utilisées. Intronisé au Temple de la renommée)

Méthode de bibliothèque externe (gem)

Méthodes de votre propre bibliothèque (assistant, modèle, application)

Options de méthode

③ Type de moule

entier, chaîne, tableau, etc.

Dans la programmation orientée objet, les types sont appelés classes et vous pouvez créer et utiliser des classes vous-même.

Terminologie de la programmation orientée objet

Classes, objets, instances, récepteurs, méthodes, messages, états, attributs (attributs, propriétés)

④ Variable (instance)

Variables, variables membres, variables d'instance, variables d'instance de classe

https://qiita.com/mogulla3/items/cd4d6e188c34c6819709

⑤ Différenciation de classe à l'aide de l'espace de noms

Le but est d'éviter les conflits inattendus de noms de classe.

⑥ Mots et identifiants réservés

Un mot qui exprime une structure telle que «traitement séquentiel», «branchement conditionnel» et «répétition».

#Mots réservés et identifiants en rubis
BEGIN    class    ensure   nil      self     when
END      def      false    not      super    while
alias    defined? for      or       then     yield
and      do       if       redo     true     __LINE__
begin    else     in       rescue   undef    __FILE__
break    elsif    module   retry    unless   __ENCODING__
case     end      next     return   until

⑦ Recherche d'abréviations

Listez toutes les abréviations déroutantes et recherchez-les tôt. Par exemple, si "GC" est écrit, l'histoire sera assez différente selon qu'il s'agit d'un garbage collection ou d'un contexte graphique. En anglais, il y a beaucoup de choses comme prendre la première lettre d'un mot ou éliminer les voyelles. En particulier, les abréviations qui sont célèbres dans le domaine du programme cible sont utilisées sans poser de questions, alors vérifiez à l'avance.

Laissez-moi vous donner un exemple d'après ce dont je me souviens. Un certain système de traitement Lisp utilise un préfixe appelé "blt" dans tout le programme, mais j'ai eu un problème parce que je ne savais pas ce que cela signifiait. C'était en fait une fonction intégrée. C'est une chose simple à comprendre, mais si vous ne comprenez pas cela, le niveau de difficulté est assez différent.

Il semble. J'ai certainement l'impression d'avoir vu une abréviation dans un projet Java. Si tu ne sais pas

  1. Demandez à une personne détaillée
  2. Examiner la documentation
  3. Recherche

Vous devrez suivre l'une de ces stratégies.

De plus, lorsque vous codez vous-même des variables, etc., il est bon de se référer au code lisible.

5.3.2 Lire à quoi le code a été conçu

RASIS est l'un des indices d'évaluation liés aux systèmes informatiques, et exprime les cinq éléments de «fiabilité», «disponibilité», «maintenance», «maintenance» et «sécurité» par acronyme (abréviation). ..

Créé sur la base de Ce à quoi vous devez faire attention lors du développement de services Web en entreprise (pour les nouveaux diplômés). RASIS n'est pas brillant, donc si vous voulez en savoir plus, veuillez vous y référer.

① Fiabilité

Résistance aux pannes du système «Difficile à casser» Indique la résistance aux pannes du système.

  1. Conception exceptionnelle
  2. Terminez la procédure de déploiement / restauration
  3. Surveillance des moyens de subsistance / détection des défauts
  4. Gérez correctement les fichiers journaux
  5. Faites une sauvegarde

②Disponibilité

Le service demandé est disponible au moment voulu Degré de «service disponible». Capacité à maintenir le système opérationnel.

  1. Éliminer un point de défaillance unique

③ Facilité d'entretien (extensible)

Visez un «système simple». Si c'est simple, il est facile d'en saisir le contenu et de le mettre à jour.

  1. Code de test
  2. Noms de variables selon la convention de dénomination des codes lisibles
  3. Gestion des versions
  4. Laissez le document
  5. Consigner les informations sur les échecs
  6. Facile à créer un environnement de développement

④ Intégrité

Il fait référence à la cohérence et à la cohérence des données. Souvent appelées données de base de données. Avec Rails, des restrictions sont placées sur la couche de modèle et la base de données.

  1. Contrôle des transactions

Qu'est-ce qu'une transaction? [Traitement des transactions DB qui peut être compris en 13 minutes] Cours d'introduction à la base de données n ° 4

  1. Contraintes DB

[Anti-Pattern SQL](https://www.amazon.co.jp/SQL%E3%82%A2%E3%83%B3%E3%83%81%E3%83%91%E3%82%BF% E3% 83% BC% E3% 83% B3-Bill-Karwin / dp / 4873115892)

Spirale négative qui brûle le développement d'applications de base de données

Liste de contrôle pour éviter "SQL anti-pattern" ① (conception logique DB)

  1. Conception du modèle

[Conception du modèle de données et meilleures pratiques (partie 2) --Talend](https://www.talend.com/jp/blog/2019/05/20/data-model-design-best-practices-part-2 /)

Que se passe-t-il si vous concevez correctement le modèle --SlideShare

Conception de domaine facile à comprendre - Apprenons la conception de modèle de domaine tout en bougeant les mains

⑤ Sécurité (sécurité)

Empêchez les informations de fuir.

  1. SSL
  2. Hachage du mot de passe
  3. Utilisez les fonctionnalités du framework
  4. Paramètres de paramètres forts
  5. Paramètres d'espace réservé

5.3.3 Lire l'historique

Consultez le journal de validation sur GitHub. Il est facile de comprendre l'intention du développeur et quel code source est lié au module terminé.

Comment lire le code source à grande échelle

Comment lire le code source pour les débutants

6 Changeons-le un peu et faisons-le fonctionner

C'est l'une des méthodes, pas le genre de "faire à ce stade". La tête humaine est une chose mystérieuse, et il est facile de se souvenir de ce que j'ai fait en utilisant au maximum différentes parties de mon corps. Je pense que le fait que beaucoup de gens préfèrent le papier manuscrit aux claviers d'ordinateur n'est pas seulement un passe-temps nostalgique, mais quelque chose comme ça.

C'est pourquoi il est très difficile de rester sur le corps juste pour lire sur un moniteur, alors lisez tout en réécrivant. Ensuite, le corps s'habitue souvent assez rapidement au code. Si vous trouvez un nom ou un code que vous n'aimez pas, réécrivez-le. Les abréviations difficiles à comprendre peuvent être remplacées par des mots qui ne sont pas abrégés ou écrits.

Cependant, bien sûr, lors de la réécriture, laissez la source originale séparément, et si vous pensez que Tsuji ne correspond pas en cours de route, vérifiez la source originale. Sinon, vous finirez par souffrir pendant des heures de vos propres erreurs simples.

Réécrire et déplacer Similaire à la section précédente, mais ici, nous allons exécuter le programme. Par exemple, essayez de modifier un peu les paramètres et le code dans un endroit où l'opération est difficile à comprendre. Ensuite, bien sûr, le comportement change, vous pouvez donc deviner ce que signifie le code.

Inutile de dire que vous devez conserver le binaire d'origine et faire de même pour les deux.

D'après mon expérience, je pense que le fait de changer et de vérifier le fonctionnement peut améliorer les compétences en programmation, et il est particulièrement recommandé pour les débutants. Cependant, j'ai constaté que je ne peux pas annuler les changements et m'impatienter face à une erreur, et parce que j'ai peur de l'erreur, j'arrête d'essayer et je rate l'opportunité de croissance. Donc, comme bouée de sauvetage, je décrirai ci-dessous comment annuler le changement.

6.1 Annuler ce sur quoi vous avez travaillé sur Git

Pratique car vous pouvez supprimer la migration de base de données et la création de fichiers

git checkout . 
git clean -df .

Je veux annuler avec git

6.2 Essayez avec des fonctionnalités interactives telles que irb

Vous pouvez tester l'hypothèse du fonctionnement des bibliothèques et des méthodes

rails c --sandbox

Résumé de la façon de suivre le code source, comment le lire et astuces

7 Je veux profiter de la lecture du code source (je veux travailler comme un jeu)

  1. Tenez un registre
  2. Lisez le code source de la zone qui vous intéresse
  3. Lire un bon code source
  4. Lisez le code source utile au travail 5.Faire un léger changement et le faire fonctionner
  5. Recherchez les bogues

[4 façons de lire le code source enseigné par le programmeur! ](Https://medium.com/traveloco-tech/%E3%81%8A%E3%81%A3%E3%81%95%E3%82%93%E3%83%97%E3%83%AD % E3% 82% B0% E3% 83% A9% E3% 83% 9E% E3% 83% BC% E3% 81% 8C% E6% 95% 99% E3% 81% 88% E3% 82% 8B-% E3% 82% BD% E3% 83% BC% E3% 82% B9% E3% 82% B3% E3% 83% BC% E3% 83% 89% E3% 82% 92% E8% AA% AD% E3% 82% 80% E3% 81% 9F% E3% 82% 81% E3% 81% AE% EF% BC% 94% E3% 81% A4% E3% 81% AE% E6% 96% B9% E6% B3% 95-2c6a2dd28bda) [Aux nouveaux programmeurs] Lisez le code source (2/2)

8 À la fin

C'est à peu près tout pour le moment. De plus, je mettrai à jour cette phrase de temps en temps en fonction des commentaires de l'extérieur et du degré de ma propre croissance.

Recommended Posts

Technologie de lecture du code source (cheet sheet)
Techniques de lecture du code source Java dans Eclipse
Lors de la lecture du code source
Aide-mémoire C # pour les techniciens Java
Code source Java lecture de la classe java.lang.Math
Code source pré-écrit pour l'activité
Aide-mémoire Java
Aide-mémoire JMeter
Aide-mémoire de Kotlin
[Aide-mémoire Docker]
Aide-mémoire Mockito + PowerMock
Fiche technique des collections Eclipse
Fiche technique du didacticiel Rails
Aide-mémoire Spring Boot2
Aide-mémoire pour la notation SCSS
Aide-mémoire de la commande Docker
Lecture de code CRuby (2): rb_newobj_of