In einer idealen Welt wird jeder von einem bestimmten Entwickler geschriebene Code gut dokumentiert, gut strukturiert und nachvollziehbar getestet, sowohl mit automatischen Tools wie Unit-Tests als auch mit Use-Case-Skripten, die ein Benutzer durchläuft, um zu überprüfen, ob Sie das erwartete Ergebnis erzielen.
Das Erste, was Sie jedoch lernen werden, ist, dass wir nicht in einer idealen Welt leben!
Viele Entwickler dokumentieren ihren Code nicht richtig, wenn überhaupt, mischen sie Geschäftslogik mit nicht verwandtem Code, und der einzige Test, den sie durchführen, ist ein schneller Durchlauf des erwarteten normalen Anwendungsfalls.
Wenn Sie mit Code wie diesem arbeiten, müssen Sie zunächst festlegen, was er tun soll. Wenn es Kommentare gibt, geben sie möglicherweise Hinweise, aber rechnen Sie nicht damit. Ich habe die Erfahrung gemacht, dass viele Programmierer nicht gut darin sind, sich selbst zu erklären, und selbst wenn sie Kommentare hinterlassen, sind sie möglicherweise bedeutungslos. Wenn Sie jedoch nicht der einzige Programmierer im Unternehmen sind, muss jemand zumindest eine grundlegende Vorstellung davon haben, wofür der Code gedacht ist und was er tun soll. Herumfragen!
Wenn Sie Unit-Tests haben, werden sie Ihr Leben verdammt viel einfacher machen. Andernfalls müssen zum Erlernen der Codebasis möglicherweise Komponententests für bereits vorhandenen Code geschrieben werden. Normalerweise wird dies nicht als bewährte Methode angesehen, da beim Schreiben von Komponententests, die dem vorhandenen Code entsprechen, Komponententests durchgeführt werden, bei denen davon ausgegangen wird, dass es sich um einen Fehler handelt richtig), aber es gibt Ihnen zumindest eine Grundlinie. Wenn Sie später feststellen, dass ein Verhalten, das Sie für richtig hielten, tatsächlich falsch ist, können Sie den Komponententest ändern, um zu prüfen, ob das erwartete Ergebnis vorliegt und nicht das Ergebnis, das der Code jetzt angibt. Sobald Sie einen Unit-Test durchgeführt haben, können Sie Änderungen vornehmen und bewerten, welche Nebenwirkungen Ihre Änderungen haben.
Die beste Ressource für den Umgang mit undokumentiertem Code ist es, die Endbenutzer zu befragen. Sie wissen vielleicht nichts über Code, aber sie wissen, was die Anwendung tun soll. Das Sammeln von Anforderungen ist der erste Schritt in einem Projekt, und das Gespräch mit den potenziellen Benutzern des zu entwickelnden Systems ist immer ein wichtiger Teil davon. Stellen Sie sich vor, Sie führen die Anforderungserfassung für ein neues Projekt durch, das zufällig bereits erstellt wurde.
Denken Sie daran, dass selbst gut geschriebener und dokumentierter Code für einen Außenstehenden schwer zu verstehen sein kann. Code ist im Wesentlichen ein Ausdruck dafür, wie die Person, die ihn geschrieben hat, zu dieser Zeit gedacht hat, und jeder hat seinen eigenen einzigartigen Denkprozess. Sie müssen lernen, ein bisschen geduldig und ein Detektiv zu sein. Es ist schwierig, sich in den Denkprozess einer anderen Person hineinzuversetzen, aber es ist eine wesentliche Fähigkeit für einen Programmierer, den vorhandenen Code zu pflegen. Da der größte Teil der Codierung (ca. 70%) mit der Beibehaltung des vorhandenen Codes zusammenhängt, ist es wichtig, diese Fähigkeit zu erlernen.
Oh, und jetzt, wo Sie den Schmerz gesehen haben, den schlecht dokumentierter, ungetesteter und durcheinandergebrachter Code verursachen kann, werden Sie es dem nächsten armen Entwickler nicht antun, richtig? :) Lernen Sie aus den Fehlern Ihres Vorgängers, kommentieren Sie Ihren Code gut, stellen Sie sicher, dass jedes Modul eine klar definierte Verantwortung hat, an die es sich hält, und stellen Sie sicher, dass Sie einen umfassenden Satz von Komponententests haben, die Sie entweder zuerst schreiben (für TDD-Methoden) oder zumindest neben dem Code, der entwickelt wird.