Das klassische Problem. Nie genug Zeit, um es richtig zu machen, immer genug Zeit, um die Arbeit zu wiederholen. Bis die Leute anfangen, die besten Praktiken zu praktizieren, wird es anscheinend nie genug Zeit geben, um die besten Praktiken zu praktizieren. Zumal die Siege für Menschen außerhalb der Entwicklung unsichtbar sind.
Der Schlüssel für die Codeüberprüfung ist, dass Sie so wenig Code wie möglich und so schnell wie möglich überprüfen möchten. Auf diese Weise ist es einfacher, Zeit für die Überprüfung zu haben, der Code ist für die Benutzer aktuell, und die Implementierung der vorgeschlagenen Verbesserungen wird einfacher. Im Extremfall möchten Sie jeden einzelnen Check-in überprüfen. Ein gutes Tool zur Automatisierung ist http://code.google.com/appengine/articles/rietveld.html . Es ist eine Variante des Tools, das Google intern verwendet, um die Codeüberprüfung bei jedem Einchecken zu erzwingen.
Die Herausforderung der Codeüberprüfung wurde vor Jahrzehnten im Klassiker The Psychology of Computer Programming beschrieben . Das Problem ist, dass Programmierer dazu neigen, ihr Selbstbild an ihre Programmierfähigkeiten zu binden. Was bedeutet, dass Programmierer immer dann, wenn sie mit Beweisen konfrontiert werden, dass ihre Fähigkeiten nicht dem Schnupftabak gewachsen sind, dazu neigen, dies persönlich zu nehmen. Dies kann zu ernsthaften Konflikten führen. Wenn Sie Steve McConnells Klassiker Rapid Development aufgreifen, bietet er eine Reihe von Vorschlägen für die Einrichtung eines Codeüberprüfungsprozesses, der die Wahrscheinlichkeit solcher Konflikte verringert. (Ein wichtiges Element ist, sicherzustellen, dass das Management niemals in den Prozess involviert ist.) Beachten Sie, dass dies die Konfliktwahrscheinlichkeit verringert, aber nicht das Auftreten von Konflikten verhindert.
Trotzdem überwiegen die Vorteile bei weitem die Kosten. Nur um eine Metrik zu zitieren: IBM stellte fest, dass die Codeüberprüfung Dollar für Dollar war, um Fehler am effektivsten zu finden und zu beseitigen. Dies ersetzt in keinem Fall Ihre QS-Abteilung. Aber es führt zu weitaus weniger Problemen, die sie finden müssen. Und das ist, bevor Sie sich mit den Vorteilen befassen, die das Lernen beschleunigen, Wissen verbreiten usw.