Oubliez-vous également le code après avoir terminé la tâche? [fermé]


13

Je suis un nouveau programmeur et je veux demander aux programmeurs seniors (programmeurs qui ont une certaine expérience dans le monde réel).

Je fais mon travail et après le codage, mon projet est terminé mais honnêtement, je ne me souviens pas du nom du code, des classes et des frameworks et de leurs propriétés.

Parfois même je doute de moi-même que j'ai fait ça?

Est-ce normal avec tous les programmeurs ou suis-je le programmeur le plus idiot qui ne se souvienne pas du nom du code et des classes / propriétés?

Éditer:

Je pense que beaucoup de programmeurs me trompent ici. J'ai dit que j'oublie les noms des frameworks, les noms des classes, les noms de propriété mais je commence à me souvenir de mon propre code une fois que je recommence à travailler dessus. Ma question est: vous souvenez-vous des noms de syntaxe et de classes / propriétés, etc.?

Réponses:


24

En toute honnêteté, je ne sais pas comment on pourrait être un développeur à long terme sans la possibilité "d'oublier" le code sur lequel vous avez travaillé. La quantité de projets et le code qui en résulterait finiraient par entraîner une surcharge d'informations pure.

Cependant, je vois cette situation comme un argument à l'appui d'une conception propre et logique. Il arrivera un moment où vous devrez prendre en charge votre propre code. Si vous avez choisi des conventions de codage fortes et logiques, votre temps de familiarisation sera considérablement réduit. De plus, cela réduirait théoriquement le temps nécessaire pour effectuer la maintenance réelle.


J'ai rencontré deux codeurs à mémoire photographique qui se souviennent de ce qu'ils pensaient lorsqu'ils ont travaillé sur un morceau de code. Avec mes capacités de mémorisation étant en dessous de la moyenne, je suis certainement obligé de faire le meilleur travail possible pour rendre le code propre et documenté.
Job

Je pense que vous avez raison, juste parce que j'oublie le code que je peux programmer sur 3 à 4 plateformes différentes!
necixy

9

Se souvenir de toute votre syntaxe et de vos API pour un projet n'est pas aussi important que de se souvenir des concepts qui ont servi à le construire. Une fois que vous avez de l'expérience, vous pouvez lire le code et en comprendre le sens, tout comme la lecture de ces messages.

Ce que vous trouverez au fil du temps, si vous vous améliorez activement, c'est que vous verrez les défauts de ce que vous avez écrit dans le passé en lisant l'ancien code (ce que je vous recommande de faire). Grâce à cette pratique, il devient plus facile à faire; comme toute autre compétence.

J'ai probablement écrit plus d'un million de lignes de code à ce jour dans ma carrière et je n'ai aucun moyen de me souvenir de tout cela. Je me souviens des projets et de ce qu'ils tentaient de résoudre (et des techniques qui ont permis de les résoudre).


5

J'oublie beaucoup de choses après les avoir utilisées, mais je les oublie différemment.

Je me suis regardé au fil des ans et je suis arrivé à la conclusion que notre cerveau (d'accord, mon cerveau) utilise une certaine stratégie de mise en cache:

  • De nouvelles informations sont apprises, utilisées puis placées dans une file d'attente d'expiration. Dans quelques semaines, c'est parti.

  • L'accès répété à ces informations une fois apprises au plus tard il y a quelques mois les promeut d'une manière ou d'une autre afin qu'elles puissent être mémorisées pendant des mois, mais alors elles expirent.

  • L'accès répété aux blocs de connaissances au cours de plusieurs années, avec des écarts d'utilisation pendant plusieurs mois, les promeut dans une mémoire prioritaire où ils ont été conservés pendant des années.

PS Je soupçonne que la première idée de cache avec application aux ordinateurs est venue de quelqu'un observant comment les humains apprennent et se souviennent des choses. Nous n'avons donc rien inventé, nous avons juste pris ce qui était déjà construit en nous.


2

Souvent. Les commentaires sont devenus obsolètes, mais je trouve que je peux généralement reconnaître mon code par mes commentaires.

EDIT: Je ne dis pas que je suis d' accord avec la tendance. Je dis simplement que c'est la tendance aujourd'hui. Comme le souligne Dave, il y a certainement un point de rupture. Il y a une discussion parfaitement merveilleuse ici: "Les commentaires sont une odeur de code" . Je tombe dans le camp "les commentaires sont pour fournir des informations sur le monde EN DEHORS de la base de code (exigences, changements commerciaux, etc.)".


Les commentaires sont dépassés? Ce n'est pas vrai.
Steve

1
Oh, je suis d'accord; Je dis simplement qu'il semble y avoir une tendance à penser que les commentaires ne devraient pas être requis. J'ai interviewé des gens qui ont insisté pour que le nom de la méthode soit tout le commentaire dont vous avez besoin. De toute évidence, ils travaillent dans un lieu mythique où les exigences commerciales ne changent pas semestriellement.
Michael Blackburn

2
Je dirais que si PullContractDataFromProfileAndDetermineZipRadiusFromCurrentLocation () est descriptif, il crée également du code illisible car il détruit le flux.
Dave Wise

1
D'accord x100. Si je n'ai pas soigneusement enregistré ce que je pensais et pourquoi j'ai pris les décisions que j'ai prises à travers des commentaires soigneusement formulés, je n'aurais absolument aucune idée de ce qui se passait quand je suis revenu lire le code que j'avais écrit il y a des mois. J'ai déjà essayé de faire valoir cet argument auprès des astronautes de l'architecture qui disent que les commentaires sont du bruit ou du passé ou obsolètes, mais personne n'a jamais écouté. Tout le monde suppose que je suis un mauvais développeur car je dois écrire des commentaires dans mon code source. Je suis d'accord avec ça, cependant. Cela m'aide et aide tous les autres après moi.
Cody Gray

@Dave: Bien que je sois d'accord avec vous, vous avez une méthode avec deux responsabilités. Votre pénitence est de 4 Hail Martins et 2 GangOfFours.
Michael Blackburn

1

Syntaxe dont je me souviens généralement après quelques utilisations. Par exemple, lorsque j'ai commencé à utiliser des génériques ou linq, j'ai eu du mal à obtenir la bonne syntaxe.

IntelliSense facilite définitivement mon travail dans la mémorisation des noms de propriété et de méthode.


1

Quand j'étais testeur, le développeur principal de l'entreprise m'a dit un jour que le code avait été écrit il y a 6 mois, aucun de mes employés ne pouvait en être tenu responsable. À l'époque, cela m'a choqué. Maintenant que je suis devenu développeur, je comprends. Je ne me souviens pas des détails du code, je sais que j'ai travaillé dessus, mais les détails ne sont pas là.


0

Presque toujours. Mon plus récent (très petit) projet était un test de mes propres compétences (rouille). Je devais moi-même écrire un tas de code procédural dans un style C très simple, puis le refactoriser en code Java en utilisant certains modèles de conception et en gardant chaque méthode sur pas plus de huit lignes, si je le pouvais.

J'ai mis le code pendant environ un mois. Quand j'y suis revenu, il a fallu attendre une heure avant de reconnaître que je l'avais écrit. Franchement, même si j'avais mis mon nom dans un champ de commentaire, je ne suis pas sûr que cela m'aurait convaincu.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.