Die Benotung von Einzelpersonen in einem Review widerspricht den meisten erfolgreichen Systemen, mit denen ich gearbeitet habe, vielleicht allen. Aber das Ziel, das ich seit mehr als 20 Jahren zu erreichen versuche, ist weniger Bugs und eine Steigerung der Produktivität pro Ingenieurstunde. Wenn die Benotung von Einzelpersonen ein Ziel ist, könnten vermutlich Bewertungen verwendet werden. Ich habe noch nie eine Situation gesehen, in der es erforderlich war, als Arbeiter oder als Anführer.
Einige objektive Studien (Fagan usw.) und viele weit verbreitete Erkenntnisse legen nahe, dass Peer-Beziehungen die Überprüfung von Codes erleichtern, um Fehler zu reduzieren und die Produktivität zu steigern. Arbeitsmanager können als Arbeiter teilnehmen, aber nicht als Manager. Diskussionspunkte werden zur Kenntnis genommen, Änderungen zur Zufriedenheit der Prüfer sind im Allgemeinen eine gute Sache, aber nicht erforderlich. Daher die Peer-Beziehung.
Jegliche automatisierten Tools , die können ohne weitere Analyse angenommen oder Urteil sind gut - Flusen in C, C ++, Java. Regelmäßige Zusammenstellung. Compiler sind WIRKLICH gut darin, Compiler-Fehler zu finden. Das Dokumentieren von Abweichungen bei automatisierten Überprüfungen klingt nach einer subtilen Anzeige der automatisierten Überprüfungen. Code-Direktiven (wie Java), die Abweichungen zulassen, sind meiner Meinung nach ziemlich gefährlich. Hervorragend zum Debuggen geeignet, damit Sie den Kern der Sache schnell erfassen können. Nicht so gut zu finden in einem schlecht dokumentierten Code-Block von 50.000 Nicht-Kommentarzeilen, für den Sie verantwortlich geworden sind.
Einige Regeln sind dumm, aber leicht durchzusetzen. Standardwerte für jede switch-Anweisung, auch wenn sie beispielsweise nicht erreichbar sind. Dann ist es nur ein Kontrollkästchen, und Sie müssen keine Zeit und Geld für Tests mit Werten aufwenden, die mit nichts übereinstimmen. Wenn Sie Regeln haben , haben Sie Torheit , sie sind untrennbar miteinander verbunden . Der Nutzen einer Regel sollte die Dummheit wert sein, die sie kostet, und diese Beziehung sollte in regelmäßigen Abständen überprüft werden.
Auf der anderen Seite ist "Es läuft" keine Tugend vor der Überprüfung oder Verteidigung in der Überprüfung. Wenn die Entwicklung dem Wasserfallmodell folgte , möchten Sie die Überprüfung durchführen, wenn die Codierung zu 85% abgeschlossen ist, bevor komplizierte Fehler gefunden und behoben wurden, da die Überprüfung eine kostengünstigere Methode ist, um sie zu finden. Da das wirkliche Leben nicht das Modell eines Wasserfalls ist, ist die Überprüfung eine Kunst und eine soziale Norm. Leute, die Ihren Code tatsächlich lesen und nach Problemen darin suchen, sind solides Gold. Management, das dies kontinuierlich unterstützt, ist eine Perle über dem Preis. Überprüfungen sollten früh und häufig durchgeführt werden .
Ich habe diese Dinge für nützlich befunden:
1) Keine Stilkriege . Wohin offene geschweifte Klammern gehen, sollte in einer bestimmten Datei nur eine Konsistenzprüfung durchgeführt werden. Alles das selbe. Das ist dann gut. Dito Einrückungstiefe ** s und ** Registerbreiten . Die meisten Organisationen stellen fest, dass sie einen gemeinsamen Standard für Registerkarten benötigen, der als großer Bereich verwendet wird.
2) zackig
looking
Text, der nicht
line up is hard to read
für den Inhalt. "
Übrigens, K & R hat fünf (FÜNF) Felder eingerückt, sodass Einsprüche gegen die Autorität wertlos sind. Sei einfach konsequent.
3) Auf eine zeilenweise nummerierte, unveränderte, öffentlich zugängliche Kopie der zu überprüfenden Datei sollte 72 Stunden oder länger vor der Überprüfung hingewiesen werden.
4) Kein Design-on-the-Fly. Wenn es ein Problem gibt, notieren Sie sich dessen Position und bleiben Sie in Bewegung.
5) Tests, die alle Pfade in der Entwicklungsumgebung durchlaufen, sind eine sehr, sehr, sehr gute Idee. Tests, die massive externe Daten, Hardwareressourcen, die Nutzung des Kundenstandorts usw. erfordern, sind Tests, die ein Vermögen kosten und nicht gründlich sind.
6) Ein Nicht- ASCII- Dateiformat ist akzeptabel, wenn Werkzeuge vorhanden sind, angezeigt, bearbeitet usw. werden oder zu Beginn der Entwicklung erstellt werden. Dies ist eine persönliche Tendenz von mir, aber in einer Welt, in der das dominierende Betriebssystem mit weniger als 1 Gigabyte RAM nicht aus dem Weg geht, kann ich nicht verstehen, warum Dateien mit weniger als beispielsweise 10 Megabyte irgendetwas sein sollten anders als ASCII oder ein anderes kommerziell unterstütztes Format. Es gibt Standards für Grafiken, Sound, Filme, ausführbare Dateien und dazugehörige Tools. Es gibt keine Entschuldigung für eine Datei, die eine binäre Darstellung einiger Objekte enthält.
Bei der Wartung, Überarbeitung oder Entwicklung von freigegebenem Code nutzte eine Gruppe von Mitarbeitern, die ich von einer anderen Person begutachtet hatte, die auf einem Display saß und einen Unterschied zwischen Alt und Neu betrachtete , als Tor zum Einchecken in einer Filiale. Mir hat es gefallen, es war billig, schnell, relativ einfach zu machen. Kurzanleitungen für Benutzer, die den Code nicht im Voraus gelesen haben, können für alle hilfreich sein, verbessern den Code des Entwicklers jedoch nur selten.
Wenn Sie geografisch verteilt sind, ist es relativ einfach, Unterschiede auf einem Bildschirm zu betrachten, während Sie mit anderen Personen sprechen, die sich die gleichen Unterschiede ansehen. Das deckt zwei Personen ab, die Änderungen betrachten. Für eine größere Gruppe, die den fraglichen Code gelesen hat, sind mehrere Sites nicht viel schwieriger als alle in einem Raum. Mehrere Räume, die durch gemeinsame Computerbildschirme und Squak-Boxen verbunden sind, funktionieren meiner Meinung nach sehr gut. Je mehr Sites, desto mehr Meeting-Management wird benötigt. Ein Manager als Moderator kann sich hier seinen Lebensunterhalt verdienen. Denken Sie daran, die Websites, auf denen Sie nicht sind, weiterhin abzufragen.
Zu einem bestimmten Zeitpunkt verfügte dieselbe Organisation über automatisierte Komponententests, die als Regressionstests verwendet wurden. Das war sehr schön. Natürlich haben wir dann die Plattformen gewechselt und den automatisierten Test hinter uns gelassen. Wie das Agile Manifest feststellt, sind Beziehungen wichtiger als Prozesse oder Tools . Nach der Überprüfung sind automatisierte Komponententests / Regressionstests die zweitwichtigste Hilfe bei der Erstellung guter Software.
Wenn Sie die Tests auf Anforderungen stützen können , naja, wie die Dame in "Als Harry Sally traf" sagt , werde ich haben, was sie hat!
Alle Überprüfungen müssen über einen Parkplatz verfügen , um Anforderungen und Entwurfsprobleme auf der Ebene über der Kodierung zu erfassen. Sobald etwas auf dem Parkplatz als zugehörig erkannt wird, sollte die Diskussion in der Überprüfung unterbrochen werden.
Manchmal denke ich, dass die Codeüberprüfung wie eine schematische Überprüfung im Hardware-Design aussehen sollte - vollständig öffentlich, gründlich, Tutorial, das Ende eines Prozesses, ein Gateway, nach dem es erstellt und getestet wird. Aber schematische Reviews sind schwergewichtig, weil das Wechseln physischer Objekte teuer ist. Architektur-, Schnittstellen- und Dokumentationsprüfungen für Software sollten wahrscheinlich schwergewichtig sein. Code ist flüssiger. Die Codeüberprüfung sollte leichter sein.
In vielerlei Hinsicht denke ich, dass Technologie genauso viel mit Kultur und Erwartung zu tun hat wie mit einem bestimmten Werkzeug. Denken Sie an all die „ Schweizer Familie Robinson “ / Familie Feuerstein / McGyver Improvisationen, die das Herz erfreuen und den Geist herausfordern. Wir wollen, dass unsere Sachen funktionieren . Es gibt keinen einzigen Weg dahin, genauso wenig wie es "Intelligenz" gab, die irgendwie von KI- Programmen der 1960er Jahre abstrahiert und automatisiert werden konnte.