Von einem Übersetzer: Heute veröffentlichen wir einen Artikel des erfahrenen Gamedev-Testers Richard Taylor für Sie. Der Artikel ist sowohl für Anfänger als auch für erfahrene Entwickler nützlich - hier gibt es definitiv etwas zu besprechen.
Ich habe viele Spiele erstellt. Normalerweise ist das letzte Entwicklungsstadium sehr schmerzhaft. Schließlich stoßen wir am Ende auf Fehler, und erst danach können wir dem Produkt vollständigen Glanz verleihen. Die Situation verschlechtert sich, wenn der Entwickler mindestens Zeit hat, um das Projekt abzuschließen. Sie müssen schnell arbeiten, und Fehler sind in diesem Fall häufige Gäste. Wie kann ich mit ihnen umgehen? Es ist sehr einfach: weniger Fehler zu machen, das ist alles (das ist die Ironie des Autors - Anmerkung des Übersetzers).
Skillbox empfiehlt: Zweijähriger Praktikumskurs "Ich bin ein PRO-Webentwickler . "
Wir erinnern Sie daran: Für alle Leser von „Habr“ - ein Rabatt von 10.000 Rubel bei der Anmeldung für einen Skillbox-Kurs mit dem Promo-Code „Habr“.
Reduzieren Sie die Anzahl der Fehler
Ist es wahrscheinlich gerade genug, das Entwicklungsteam zu bitten, weniger Fehler zu machen, da alle Fehler im Code enthalten sind?
Wenn Sie an diesem Ort lustig sind, werde ich nicht überrascht sein. Und wirklich, weil niemand (naja oder fast niemand) sie freiwillig tut. Was können Sie dem Team also anbieten, um weniger Fehler im Code zu machen, damit es keine Fehler enthält?
Wir starten ein neues Projekt. Erster Schritt - Wiederholen Sie keine vorherigen Fehler
Unser Team hat an mehreren AAA-Projekten gearbeitet. Bevor wir mit einem von ihnen begannen, beschlossen wir, ein Brainstorming zum Thema "Wie man die minimale Anzahl von Fehlern macht" durchzuführen. Keiner von uns wollte in den letzten Monaten an einem Projekt arbeiten, um nach Fehlern zu suchen und Code zu löschen. Eine der Hauptaufgaben ist die Verteilung von Verantwortlichkeiten und Verantwortlichkeiten. Jeder Art von Arbeit wurde ein Senior zugewiesen.
Der erste Schritt besteht darin, zu entscheiden, warum dies alles notwendig ist. Das „Warum“ der oberen Ebene wird einfach erklärt: Wir möchten den Zeitaufwand reduzieren, um Fehler zu beseitigen, Kosten zu optimieren und die Gesamtqualität des Projekts zu verbessern.
Es geht darum, Zeit für die Ausführung interessanter Aufgaben zu gewinnen, die es Ihnen ermöglichen, morgens glücklich aufzuwachen und die Umsetzung der Aufgabe sofort zu übernehmen. Das hat uns alle zu Entwicklern gemacht - die Gelegenheit, unsere Zeit für wirklich coole Sachen zu nutzen!
Übrigens, selbst wenn es eine klare Aufgabe gibt, weniger Fehler zu erstellen, ist es so allgemein, dass es einfach bedeutungslos sein kann. Dies ist eine Absichtserklärung, die geklärt und in eine Reihe klarer Aufgaben unterteilt werden muss, die an einzelne Teammitglieder gerichtet sind.
Bei der Beantwortung der Frage, wie dies zu tun ist, müssen die Grundlagen der wissenschaftlichen Methode befolgt werden: Beobachtung, Hypothese, Test, Wiederholung.
Beobachtung
KategorisierungÖffnen Sie die Fehlerdatenbank Ihres neuesten Projekts und zeigen Sie sie an. Es gibt viele verschiedene Arten von Fehlern. Nur zu sagen: Weniger Fehler sind einfach nutzlos.
Um das Problem besser zu verstehen, müssen Sie die Einzelheiten ermitteln. Zunächst ist es notwendig, die Anzahl dieser Probleme zu verringern, deren Erkennung und Lösung einen Durchbruch in der Zeit erfordert.
AnalyseNachdem Sie eine Liste der zeitaufwändigsten Fehler zusammengestellt haben, versuchen Sie im nächsten Schritt, eine gemeinsame Grundlage für diese Fehler zu finden und den Grund für ihr Auftreten zu verstehen. Analysieren und interpretieren!
Ursache des ProblemsAm Ende haben wir eine Reihe von Vorlagen für die Suche nach bestimmten Fehlern erstellt, mit denen wir verstehen konnten, warum ihre Suche und Beseitigung so viel Zeit in Anspruch nimmt. Danach waren wir bereit, zum Quellcode zu gehen, um die Grundursache des Problems zu finden.
In Zusammenarbeit mit technischen Spezialisten haben wir weitere Korrekturen festgestellt. Dann haben wir neue Listen mit Systemen, Dateien und Codezeilen zusammengestellt, die mit schwerwiegenden Fehlern verbunden sind. Am Ende haben wir eine Liste der notwendigen Codeänderungen erstellt, die mit dem Entwicklungsteam besprochen werden konnten.
Wir haben es dir gesagt!Dann hatten wir ein Treffen mit den Programmierern, um unsere Ergebnisse zu diskutieren. Wie sich herausstellte, kannten die Jungs die meisten Problembereiche im Code. Aber wenn ja, wozu sollte man sich treffen?
Antwort: Es ist uns gelungen, eine Parallele zwischen bestimmten Stellen im Code und den mit diesen Problemen verbundenen Zeitverlusten zu ziehen. Dies wiederum ermöglichte es, jeden Vorschlag für die Codepflege objektiv zu bewerten.
Daher haben wir Abschnitte des Codes überprüft, die als akzeptabel schlecht bezeichnet werden könnten. Als wir sie mit unseren Best Practices bewerteten, stellte sich heraus, dass wir ein Refactoring benötigten. Gleichzeitig hat das Engineering-Team es zuvor aufgegeben, weil „es zu viel Arbeit gibt“ oder „es einfach unmöglich ist“.
In der Tat waren viele Probleme systemisch. Viele „unsichtbare“ Aspekte führten zu einer Kette von Ereignissen, die den Anschein eines Fehlers verursachten. Die Ursachen der Probleme waren übrigens so systematisch, dass das Projekt von vorne beginnen musste.
Infolgedessen haben wir genügend Ergebnisse empirischer Beobachtungen und Analysen gesammelt, um Hypothesen zu bilden. Das gesamte Team hat an diesem Prozess teilgenommen.
Hypothesen
Hypothese 1. Bestimmte Codierungsmuster führen wahrscheinlich zum Auftreten von Fehlern in einem großen Softwareprojekt.
Hypothese 2. Die zur Korrektur von Fehlern in einem Projekt erforderliche Zeit kann reduziert werden, indem die in der ersten Hypothese definierten Verhaltensmuster vermieden werden.
Lassen Sie uns entscheiden, was ein großes Projekt ist. Dies sind ungefähr 25 Programmierer, 12 Monate Entwicklungszeit. Die folgenden Aussagen gelten für ihn:
A. Jeder Code wird lange genug leben, sodass die Wartungskosten letztendlich die Kosten für die Entwicklung selbst übersteigen.
B. Die Komplexität der Verbindung einzelner Projektsysteme ist höher als die Komplexität eines bestimmten Systems.
Warum ist das so wichtig? In kleinen Projekten kann man fast alles bewältigen, hier ist die Programmstruktur nicht so wichtig. Der Code steht Ihnen zur Verfügung.
Wenn das Projekt groß ist, ändert sich alles. Sie können mit einem Code arbeiten, dessen Zweck Sie nicht verstehen. Möglicherweise wissen Sie nicht einmal, zu welchem Teil des Projekts eine bestimmte Site gehört.
Nach unserer Diskussion erhielten wir folgende Ergebniserklärung: „Die Daten zeigen, dass diese spezifischen Programmiermuster ein gemeinsamer Faktor waren, der mit verschiedenen Fehlern / Problemen verbunden war. Wir glauben, dass wir durch das Vermeiden dieser Muster die Zeit reduzieren können, die zur Behebung von Fehlern benötigt wird, und gleichzeitig die Qualität verbessern können. “
Nun beginnen wir mit der praktischen Umsetzung.
Testen
Wenn Sie ein neues Projekt erstellen, müssen Sie identifizierte Fehlermuster vermeiden. Wir hatten es:
- Überlastung des Bedieners und falsche Benennung.
- Automatische, polymorphe Merkmale und Vernachlässigung der Typensicherheit.
- Erhöhung der Codekomplexität durch Einfügen von Abhängigkeiten und Rückrufen.
- Verwenden von Mutexen, Semaphoren und dergleichen in Code auf hoher Ebene.
Was weiter?
Und dann hatten wir die Möglichkeit, ein neues Projekt zu starten, die Entwicklung eines neuen Spiels. Mit einem relativ kleinen Team von Programmierern konnten wir eine Game-Engine von Grund auf neu erstellen und alles pünktlich fertigstellen. Es gab nur wenige Fehler, aber der Code erwies sich als gut. Gleichzeitig dauerte es ein wenig, bis es gewartet war.
All dies wurde möglich, weil wir keine problematischen Muster verwendeten, als ob sie nicht mehr existierten. Wir haben sogar das Mantra "Komplizieren Sie das Auftreten eines Fehlers."
Das ganze Team war mit solchen Ergebnissen zufrieden, es wurde interessanter zu arbeiten, weil es wieder möglich wurde, Zeit mit dem zu verbringen, was Ihnen gefällt.
Skillbox empfiehlt: