Jorg3000 hat geschrieben: Di 12. Apr 2022, 15:14
- Vor jeder Änderung überlege ich, welche Seiteneffekte es haben könnte - und schaue es vorab im Source nach.
Hier hilft sauberes Arbeiten und das einhalten von bestimmten Design-Pattern.
Jorg3000 hat geschrieben: Di 12. Apr 2022, 15:14
- Bei jeder Ansicht von Quellcode schaue ich, ob er noch meinem aktuellen Kenntnisstand von "good practice" entspricht.
Genau. Nach Allgemeinen und speziell für Lazarus Code Conventionen suchen. Ordentlliche Variablen, kein vermischen von Logiken usw.
Jorg3000 hat geschrieben: Di 12. Apr 2022, 15:14
- Änderungen werden dokumentiert: im Detail im Source selbst, und grob in einem ChangeLog.
- Von früheren Versionsständen habe ich Kopien.
Dafür gibt es Versionsverwaltungstools wie Git, SVN usw. Der neueste Schrei, wenn man sowas überhaupt noch nicht gemacht hat, ist Git. Hier siehst du deine Änderungen und kannst auch auf frühere Versionen einfach springen. Änderungen zurück nehmen und schauen, wer was gemacht hat. Aus Git, SVN lassen sich dann auch Changelogs erstellen.
Jorg3000 hat geschrieben: Di 12. Apr 2022, 15:14
- Neue Methoden statte ich mit Plausibilitätsprüfungen und Fehlermeldungen aus.
- Nach Änderungen teste ich alle abhängigen Programmteile einzeln.
UnitTests und wenn ein neues Projekt gleich mit TDD (Test Driven Development) anfangen. Hier schreibst du deinen Code der gleich getestet wird. Ich weiß nicht wie es unter Lazarus ist, aber in der Webentwicklung gibt es schon zahlreiche Tools die deine Entwicklung mit überwachen. Überwachen nicht im Sinne von Spionieren. Für gängige Sprachen wird es sicherlich ähnlich aussehen.
Jorg3000 hat geschrieben: Di 12. Apr 2022, 15:14
- Freigabe erst, nachdem ich mir (Tage später) sicher bin, nichts übersehen zu haben.
Aus meiner Erfahrung heraus. Ich hatte am Anfang, wo ich gelernt habe wie man Programmiert, hatte ich viele Schwierigkeiten. Ich habe in einer Firma gearbeitet, wo der Code nichts sagend war, technisch (HTML, JS, CSS, SQL und PHP) total vermischt und Spaghetticode. Keiner hat sich da mehr sonderlich ausgekannt. Meine Projekte habe ich versucht technisch immer zu trennen und bestimmte Regeln zu befolgen. Was mich zu allgemeinen DesignPattern (MVC, etc.) gebracht hatte. Das hat mein Entwicklerleben enorm erleichtert. Mit Einsatz von Git, in der Firma hatten wir SVN, ist meine nächste Hürde gefallen. Ich hatte verschiedene Versionen auf der HDD, oder DVD oder USB-Stick. Nachdem ich Anfänglich mich mit Git beschäftigt habe und mir mehrere GitHub-Accounts angelegt hatte, ist diese selbst gebastelte aus verschiedenen Medien dann gestorben. Ich mache kein Projekt mehr ohne Git. Anbieter gibt es verschiedene und einen Git-Server kann man auch selbst betreiben. Schon hier ist mir viel an Verwaltung weg gefallen. Später habe ich mit UnitTests und TDD angefangen. Ich verstehe sicherlich nicht alles und kann noch nicht alles Testen, weil Verständnis fehlt, aber diese Hürde fällt auch nach und nach. Ich erstelle mir automatisiert eine Code-Coverage und sehe dann was nicht gestestet wurde, was getestet wurde usw. Und dass alles fast nebenher, wenn du deinen Code schreibst

Das ist einfach Toll!
Jorg3000 hat geschrieben: Di 12. Apr 2022, 15:14
Wahrscheinlich lassen sich dafür mehrere schöne Fachbegriffe finden, die ich einfach nur nicht kenne. Ich muss mir über das Thema mal Gedanken machen und es gescheit dokumentieren. Man wächst schließlich mit seinen Aufgaben.
Einfach nach Begriffen wie TDD, Software testen usw. suchen und du solltest schon vieles finden. Auch von Bezahlten Kursen zu diesem wichtigen Thema nicht zurück schrecken. Meiner Erfahrung nach entsteht eine gescheite Dokumentation, während der Planungsphase. Wenn du deine Software bereits schreibst, bevor du dir da ordentlich Gedanken darüber gemacht hast, läuft schon einiges Schief

Programmierung ist schließlich die Umsetzung aus der Plannung heraus und für die Kommentare aus dem Code, gibt es wiederum Tools die eine daraus automatisch eine technische Dokumentation bauen.
Edit: Siehe, Anhang. Weil ich jetzt mehrere ältere Projekte zu einem großen Webprojekt zusammen schweiße, übernehme ich den alten Code und teilweilse refactore ich das. Weil hier zumindest teilweise auch alte Tests existieren, kann ich diese Tests auch nutzen um zu sehen ob alles in Ordnung ist.
Ich weiß sowieso das es knallen wird und auch wo, weil ich noch nicht alles übernommen habe. Aber bei diesen Tests weiß ich, das ich mich darauf verlassen kann. Ist das alles gemacht und es findet später eine Codeänderung statt, finde ich das auch schnell heraus
