Frage

Ist es nie ok Software zu werfen?
Joel schließt Unternehmen sollten nie aus Software werfen.

Ich versuche, ein guter kleiner Programmierer zu sein und diese Regel folgen. Ich habe in ein fünf Jahre altes Projekt kommen, die von einem Mann ausgeführt worden ist. Es ist mit anti-Mustern gefüllt und in der Regel schlechten Design. Die meisten Probleme sind aus der Datenschicht mit Inline-dynamischen SQL.

  • Pro: Benutzer sind vertraut mit der Art und Weise diese App funktioniert und komfortabel mit seinen Fehlern. Die Anforderungen sind gebaut, aber es gibt einige, zugrunde liegende Probleme, die verursacht haben Benutzer die gesamte in Frage zu stellen Zuverlässigkeit der Anwendung.
  • Cons: Anti-Muster, intensive     Kupplung, Inline SQL, unmöglich     Datenschicht.

Ich konnte wieder sammeln Anforderungen und baut mit OO, Design Patterns und moderne .NET-Techniken, um diese Anwendung zu machen. überschaubar und teamable.
In kleinen Anwendungen mit Problemen wie diese sollen folgen wir Joels Rat?

Diese Frage kann sein subjektive geworfen werden, aber ich finde dies als Programmierer zu meiner Arbeit von entscheidender Bedeutung sein.

War es hilfreich?

Lösung

Was Joel ist auf immer ist, wenn man alles wegwerfen und von Grund auf neu starten, werden Sie werfen Jahren Arbeit ohne Garantie, dass das Umschreiben deutlich besser sein wird als das, was Sie bereits haben.

Statt auf ein Umschreiben der Fokussierung, betrachten die Praktikabilität zu einer Zeit, ein Stück Ihrer Anwendung Refactoring. Anstelle von Inline-SQL, denkt vielleicht über eine neue Datenschicht zu schaffen, vielleicht auf der Grundlage eines „besseren“ Ansatz wie LINQ. Dann könnten Sie neue zu einer Zeit Schicht einer Funktion auf diese wandern über. Auf diese Weise werden Sie auf dem Weg zu Ihrem Ziel eines besseren Code-Basis bewegen, ohne dass Jahre der bisherigen Arbeit wegzuwerfen.

Andere Tipps

würde Mein Rat dies sein. Wenn es funktioniert, verwirren sich nicht mit ihm, bis der nächsten signifikanten Freisetzung in Ihrer Anwendung. Dann Refactoring, wie Sie für notwendig erachten. Wir stellen uns die gleiche Sache in meinem Unternehmen, und wir in der Regel das Problem der Art und Weise handhaben ich beschrieben.

Nicht weg alten Code zu werfen, oder fehlerhaften Code oder nicht mehr relevant Code ist, IMO, lächerlich. Es sei denn, der Code hat wichtige Stücke, die einfach nicht leicht reproduziert werden.

  

Die meisten Probleme sind aus der Datenschicht mit Inline-dynamischen SQL.

Solange es einige Unterschiede zwischen UI und Daten, ist dies nicht unbedingt ein Problem. Nicht Vorurteil Inline-SQL -. Solange es parametriert, es ist ein ganz praktikable Ansatz

Zur Frage; Ich würde die Frage, was die technischer Grund für die Verschrottung es ist. Wenn Sie es in real rechtfertigen (idealerweise in $ £ € ¥), dann groß. Aber tun Sie es nicht, nur weil Sie, wie das Aussehen es nicht tun. Ich habe vor verschrottet Code, aber ich versuche es in einer Regressionsfreien Art und Weise zu tun, kann gewunden sein.

Wie für die Nutzer; Richtig gemacht, dass sie nicht wirklich brauchen, zu wissen, dass es eine Änderung gibt, aber selbst wenn Sie die Benutzeroberfläche ändern möchten -. die meisten Menschen sind sehr flexibel und freuen sich auf eine neue Benutzeroberfläche anpassen

Anstatt wirft alles und von vorne anfangen würde ich es Refactoring, wie ich gehe, kleine Änderungen von Unit-Tests unterstützt. Die Kosten für die es von Grund auf neu zu schreiben ist es selten wert.

Ich werde den obligatorischen Stecker machen zu überprüfen Effektives Arbeiten mit Legacy Code von Michael Feathers. Er macht ein starkes Argument für inkrementell Refactoring, mit einem Fokus auf Legacy-Code unter Test zu bekommen. Das Buch ist etwas veraltet, aber dann wieder, so dass Ihr Code ist. Ich fand es sehr hilfreich sein, da es half mir eine konzeptuelle Verschiebung machen, die die Art und Weise verändert hat, dass ich so genannte ‚braunen Bereich‘ Projekte nähern. Wenn ein Entwickler ein Haus umzubauen gefragt wird, würde er nur selten schlagen die Struktur mit Bulldozern und von Grund auf neu beginnen zu müssen; das Projekt einfach zu teuer, und es ist zu lang wäre eine Periode, wo die Struktur nicht mehr verwendbar ist.

Ich denke, Software wie Sie beschreiben, ist weg nicht streng geworfen, sondern konnten zur Unkenntlichkeit umgestaltet werden müssen, wahrscheinlich nach dem ersten einer Reihe von Tests zu schreiben während des Prozesses sicher nichts Pausen zu machen.

An diesem Punkt wurde es entfernt oder nicht geworfen? Ich würde sagen, ja, obwohl der endgültige EXE Name und sichtbar Betrieb das gleiche sein können. Kurz gesagt, ich denke, das eher eine Frage der Semantik sein kann und Pragmatismus angesichts der realen Welt Zwänge, als die tatsächliche beste Praxis.

Das ist genau der Fall, in dem Sie die alte Version behalten wollen;)

Bis Sie das neue System mit den genauen Fehler der alten replizieren, werden die Nutzer verlangen die alte Anwendung zurück ... Viele Benutzer werden einige Bugs als Feature sehen (wie die „Schnellabschaltung Option“ oder was auch immer Macken auftreten )

Es ist in der Regel sehr schwierig, eine geschäftliche Rechtfertigung für eine vollständige Überarbeitung zu machen, wenn Kunden „zufrieden“ mit einem Produkt sind. Mein Rat ist, Refactoring, wie Sie neue Funktionen entwickeln sich langsam auf die gewünschte Architektur zu bewegen. Dies ist oft leichter gesagt als getan, aber kann Sinn für Projekte machen wie Sie beschrieben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top