2008-09-09 8 views
6

G'day,Schlechte Gerüche, wenn Review-Code den Ansatz beeinflusst?

Ich war von Kristopher Johnson über meine Antwort auf diesen question in Bezug auf Software-Entwicklung Qualität zu einem Kommentar zu denken.

würde ich geschrieben eine Liste von Software-Qualitätsmetriken, die ich aus der Spitze von meinem Kopf denken konnte, die enthielten:

  1. McCabe zyklometrische Komplexität - im Grunde ein Maß für die Anzahl von linearen Pfaden durch Code.
  2. Ebenen der Einrückung - ein Maß für die Komplexität bei der Betrachtung verschachtelter Entscheidungsaussagen.
  3. Abstand von Deklaration bis zur ersten Verwendung - wie viele Anweisungen existieren zwischen dem, wo eine Variable deklariert wird und wo sie zuerst verwendet wird.
  4. Kommentar Prozentsatz - wie viele Zeilen Code sind Kommentare im Vergleich zum Quellcode.
  5. Prozentsatz der Testabdeckung - als Prozentsatz der Codezeilen wird angegeben, wie viele Tests durchgeführt werden.
  6. Pfad Testabdeckung - wie viele Pfade der Ausführung werden von Ihren Tests ausgeübt.
  7. Einheitenabdeckung - wie viele einzelne Einheiten, Klassen, Pakete usw. werden von Ihren Komponententests ausgeführt.

Kris Kommentar war:

Nur die Testüberdeckungsmetriken hier aufgeführten könnte ein gewisses Maß an in Betracht gezogen werden „Qualität.“ Die anderen sind Messungen von Komplexität und Lesbarkeit, die wirklich nichts mit Qualität zu tun haben.

Abgesehen von der Tatsache, dass ich mit dieser Aussage überhaupt nicht einverstanden bin, hat es mich zum Nachdenken gebracht.

Wenn ich Code überprüfen muss, der kaum zugehörige Tests hat, egal ob Einheit, System oder Integration, neige ich dazu, den Code viel, viel vorsichtiger anzugehen, als wenn ich eine gute Suite von Tests sehe, die erfolgreich bestanden wurden.

Das Gleiche gilt für Sicherheitsüberprüfungen von Code. Wenn ich unbenutzte Variablen, riesige Funktionen, bizarre Mischungen von Konfigurationen, pro Server, pro Verzeichnis usw. in Apache-Modulen verwende, prädestiniert es mich auch, den Code sehr vorsichtig anzugehen.

Verwendet jemand anderes diesen anfänglichen "Bauchgefühl" -Ansatz und beeinflusst er das Ergebnis?

BTW Ich stimme Kris Kommentar nicht, da alle anderen Metriken definitiv gültige Maßnahmen sind, die helfen, schlecht entworfenen, schlecht ausgeführten Code hervorzuheben. Wie Damian Conway sagt:

Immer Code, als ob der Typ, der endet, Ihren Code aufrechtzuerhalten, ein gewalttätiger Psychopath sein wird, der weiß, wo Sie leben.

Antwort

6

Entwickeltes "Bauchgefühl" unterscheidet Anfänger von Profis. Nachdem Sie etwas Erfahrung gesammelt haben, wird "Bauchgefühl" zu einem der wichtigsten Faktoren für die endgültige Entscheidung. Es spielt keine Rolle, ob Sie jemandes Code überprüfen oder eine Systemarchitektur erstellen, Bauchgefühl führt Sie. Der pragmatische Entwickler darf jedoch nicht zu selbstsicher sein. Es gibt immer einen Platz für Checklisten und andere Mittel.

Wie für Metriken, stimme ich Ihnen völlig zu. Metriken sind bedeutungslos, wenn sie nicht zur Codequalität beitragen.

+0

Aber sicherlich ist "Bauchgefühl" erst nach einer langen Zeit bitterer Erfahrung festzustellen und kann daher nicht im Bereich des "Anfängers" liegen? –

+0

Es ist so wie es ist. – aku

+0

Entschuldigung aku! Ich liege niedergeschlagen vor dir und entschuldige mich dafür, dass du deinen Kommentar nicht gelesen hast. Ich sehe, wir stimmen wirklich zu! (-: –

1

Ich denke, Sie und Kris stimmen nur nicht auf die Definition von Qualität. Nehmen Sie die Analogie eines Beweises in der Mathematik.

Sie könnten argumentieren, dass die Qualität nur darauf basiert, ob der Beweis korrekt ist, das heißt es geht richtig von Annahmen zu Ergebnissen.Die meisten Mathematiker würden jedoch zustimmen, dass einige Beweise besser sind als andere, weil sie kürzer, geschickter oder leichter zu verstehen sind, und dies sind Qualitätsmaße. Nur die erste Definition ist formal definierbar, aber die meisten Mathematiker, die ich denke, würden die zweite bedeuten, wenn sie "einen besseren Beweis" sagten.

Was Kris sagt, ist unter der ersten Definition wahr, nur wirklich Korrektheit Tests messen, aber ich denke, die meisten Programmierer, mich eingeschlossen, würde auch Qualität mit Ihren Maßnahmen verknüpfen.

+0

Einverstanden. Korrektheit ist tatsächlich beweisbar. Aber wenn eine Lösung in Code implementiert wird, der schlecht entworfen und schlecht implementiert ist, schießen Sie sich nicht selbst in den Fuß, wenn es an der Zeit ist, diesen Code zu pflegen? Als solche ist der Wert des Codes dann wertlos für die Firma, für die es implementiert wurde. –

1

Ja, das "Darm Feeling" ist ein sehr gutes Werkzeug, sobald Sie ein wenig Erfahrung haben. Ich erinnere mich, dass Hunt und Thomas dies in der Pragmatic Programmer erwähnen. Sie sagen etwas wie "Sie haben viel Erfahrung, also ignorieren Sie dieses nörgelnde Gefühl nicht" (wenn Sie das richtige Zitat haben, oder wenn es von einem anderen Buch ist, korrigieren Sie mich bitte).

Carl