2009-01-20 5 views
6

Da Arbeitsfunktionen besserer Wert für ein Unternehmen als guter Code zu einem bestimmten Zeitpunkt und schlechter Code sind, macht weitere Funktionen hinzu schwierig:Stoppen Code rot

Wie stoppen Sie den Code verschlechtert im Laufe der Zeit?

Zu jeder Zeit ist es wichtiger, eine funktionierende Funktion zu bekommen, als sie mit gut entwickeltem Code zu arbeiten, der länger dauert. Auch wenn mit der Zeit der Aufwand für jedes Feature steigt.

Wie verhindern Sie, dass sich der Code im Laufe der Zeit in einen unhaltbaren Brei verwandelt?

Antwort

12

Eine umfassende Reihe von Unit-Tests

edit: und es ist hilfreich, wenn sie gut genau alle geschrieben in einer für Menschen lesbare Art und Weise Ihrer Klassen/Schnittstellen zu testen.

bearbeiten 2: wie svelil sagt, refaktorieren Sie Ihren Code, um es sauber zu halten, aber in der Lage, dies zu tun, ist eine Konsequenz der Durchführung der Unit-Tests.

+0

+1 - amen dazu. –

+0

Integrationstests, Funktionstests und UI-Tests sind ebenfalls erforderlich;) – workmad3

+0

- Diese werden sicherstellen, dass der Code funktioniert. Ich habe mehr über die Wartbarkeit des Codes nachgedacht. –

1

Ein anständiger Satz von Codierungsstandards.

Sie müssen nicht vollständig sein, aber sie sollten bedeuten, dass Sie wissen, was Dinge wie Ihre Klammer-Einrückung ist, so dass Sie weniger darüber nachdenken müssen (und es bedeutet, dass der Code überstürzt und nicht richtig formatiert wurde (fällt wie ein wunde Daumen auf)

2

Periodische Refactorings, insbesondere in dem Codeabschnitt, in dem Sie gerade arbeiten (die "Boy Scout" -Regel).

3

ein Iterieren Entwicklungsprozess verwenden:

  1. Implement Funktion
  2. Umgestalten Code
  3. Springe zu 1.

Sie haben eine gewisse Disziplin haben, aber ohne sie werden Sie am Ende eine Sauerei haben. Selbst wenn Sie denken "Oh, der Code ist lesbar genug", überspringen Sie Schritt 2 nicht. Natürlich sollte die Entwicklung immer von Tests begleitet werden.

2

Die oberste und akzeptierte Antwort in dieser Frage sollte "Umfassende Komponententests" sein.

Diese Antwort wird das nicht wiederholen.

Das Hinzufügen von Komponententests zu einem vorhandenen Projekt ist jedoch viel schwieriger und im Allgemeinen eine schlechte Imitation dessen, was erreicht werden kann, wenn der Anwendungscode selbst mit Unit Testing geschrieben wurde.

Auch extreme Termindruck kann es unmöglich machen, zu berücksichtigen, diejenigen, die nicht erlebt haben mit Unit-Tests ist es immer noch eine große Punt.

Meine Empfehlung in diesen Bedingungen ist schreiben so gut wie Sie können, um die aktuellen Ziele zu erreichen. Bereiten Sie sich darauf vor, vorhandenen Code vor dem Hinzufügen neuer Funktionen zu refaktorieren. Während Unit-Tests diesen Ansatz viel sicherer machen würden, ist dieser Ansatz auch ohne Komponententests noch nützlich.

Natürlich sind gute allgemeine Tests und QA wichtig.

11

Komponententests werden die Fäulnis nicht von alleine stoppen.Ich kann immer noch horrenden, nicht wartbaren Code schreiben, der einen Komponententest besteht.

Eine bessere Antwort sind Komponententests. + regelmäßige Refactoring + Peer-Review (entweder bei Paarung Stufe oder nach) + -Standards

Sie wissen, gibt es keinen Königsweg.

0

In meinem Job, wenn wir den Code einfrieren, ist manchmal der "schnelle und schmutzige" Ansatz notwendig. Dies führt in der Regel zu einigen ziemlich zwielichtigen Code, der funktioniert, aber Ihre Augen beleidigt.

Jedoch unmittelbar nach dem Versand gibt es eine Zeit der relativen Ruhe. Dies ist die perfekte Gelegenheit, um etwas von diesem stinkenden Code zu betrachten und ihn in eine Form zu bringen.

Es hilft, eine Liste von Bereichen zu führen, die Sie aufräumen möchten, und ihnen eine gewisse Priorität zuzuweisen. Trotz wie gut Sie glauben, Ihre Erinnerung zu sein, werden Sie vergessen.

Dieser Ansatz funktioniert sehr gut für mich, aber ich denke, es hängt von Ihrem speziellen Projekt-Workflow ab.