Frage

Angenommen, Sie haben eine C # Codebase geerbt, die eine Klasse mit 200 statischen Methoden verwenden Kernfunktionalität (zB Datenbank-Lookups) zur Verfügung zu stellen. Von den vielen Alpträumen in dieser Klasse, gibt es reichlich Gebrauch der ungarischen Notation (die schlechte Art).

Möchten Sie die Variablennamen Refactoring die ungarische Schreibweise zu entfernen, oder würden Sie sie in Ruhe lassen?

Wenn Sie ausgewählt haben, alle Variablen zu ändern ungarische Notation zu entfernen, was Ihre Methode wäre?

War es hilfreich?

Lösung

Lass es einfach allein. Es gibt bessere Verwendung Ihrer Zeit.

Andere Tipps

Umgestalten -. Ich finde ungarische Notation in dieser Größenordnung wirklich mit der natürlichen Lesbarkeit des Codes stört, und die Übung ist ein guter Weg, um vertraut mit dem, was es gibt

Wenn jedoch gibt es noch andere Teammitglieder, die die Code-Basis kennen Sie Konsens über die Refactoring benötigen würde, und wenn eine der Variablen außerhalb des einen Projekts ausgesetzt sind, dann müssen Sie sie in Ruhe lassen.

Rechtsklick auf den Variablennamen, Umgestalten -.> Umbenennen

Es gibt VS-Add-Ins, die dies auch tun, aber die integrierte Methode funktioniert gut für mich.

Was würde ich tun? Unter der Annahme, dass ich nur noch den Code zu erhalten und es nicht irgendeine signifikante Art und Weise neu zu schreiben? Lassen Sie es gut allein. Und wenn ich tun Code hinzufügen, gehen Sie mit dem vorhandenen Stil, das heißt, verwenden die hässliche ungarische Notation (so schmutzig wie das macht mich fühlen).

Aber, hey, wenn Sie wirklich haben eine hankerin fer refactorin' Sie dann nur ein wenig in einer Zeit. Jedes Mal, wenn Sie daran arbeiten 10 Minuten verbringen Variablen umbenennen. Aufräumen Dinge ein wenig. Nach ein paar Monaten können Sie es ist picobello sauber finden ....

Vergessen Sie nicht, dass es zwei Arten von ungarischer Notation.

Der ursprüngliche Charles Simonyi HN, später als App des bekannten ungarische und der spätere Gräuel genannt System-ungarische nach einigen Peckerhead (es ist ein technischer Begriff) völlig falsch verstanden Simonyi ursprüngliches Papier .

Leider wurde System-HN von Petzold und anderen propagiert die dominanteren Abtreibung werden, die sie zu Recht als heute erkannt wird.

Lesen Sie Joels ausgezeichneten Artikel über die Absicht der ursprünglichen Apps ungarischen Notation und sein Entschuldigung für das, was in der Eile verloren bekam.

Wenn das, was du hast, ist ungarischer App werden Sie wahrscheinlich wollen, dass es zu halten, nachdem sowohl den ursprünglichen Charles Simonyi Artikel und Joel Artikel zu lesen.

Wenn Sie in einem dampfenden Haufen von System-ungarischen gelandet?

Alle Wetten ab!

Puh! (Sagte, während die Nase halten) (-:

Wenn Sie das Gefühl Glück und wollen einfach nur die ungarische weg zu gehen, zu isolieren, die ungarischen Präfixe, die verwendet werden, und versuchen, eine Suche und ersetzen in Datei ihnen zu ersetzen nichts , dann ein sauberes tun und wieder aufzubauen. Wenn die Anzahl der Fehler klein ist, nur um es zu beheben. Wenn die Anzahl der Fehler sehr groß ist, gehen Sie zurück und bricht sie in logischen (durch Domain) Klassen zuerst, dann einzeln umbenennen (die IDE helfen)

Ich habe es zu verwenden religiös zurück in den VB6 Tagen, stoppte aber, als VB.NET kam heraus, weil das ist, was die neuen VB-Richtlinien sagten. Andere Entwickler nicht. So haben wir eine Menge alten Code mit ihm. Wenn ich Wartung Code entferne ich die Schreibweise aus der Funktionen / Methoden / sub I berühren. Ich würde es nicht entfernen Sie alle auf einmal es sei denn, Sie wirklich gute Unit-Tests für alles haben und sie laufen zu beweisen, dass nichts gebrochen ist.

Wie viel wollen Sie, indem Sie diese brechen? Das ist eine wichtige Frage, sich zu fragen. Wenn es eine Menge anderer Teile des Codes sind, die diese Bibliothek verwenden, dann können Sie nur für Leute sein, die Schaffung der Arbeit (vielleicht haben Sie), indem durch die Umbenennung Übung gehen.

ich es auf der Liste der Dinge setzen würde zu tun, wenn Refactoring. Zumindest dann jeder erwartet, dass Sie die Bibliothek zu brechen (vorübergehend).

Das heißt, ich völlig frustriert mit schlecht genannten Methoden und Variablen, so kann ich beziehen.

Ich würde nicht ein Projekt daraus machen. Ich würde die Refactoring-Tools in VS verwenden (eigentlich ich ReSharper ist verwenden würde, aber VS Arbeit ganz gut) und beheben Sie alle Variablen in jeder Methode, die ich aufgefordert wurde zu ändern. Oder wenn ich musste größere Änderungen vornehmen, würde ich die Variablennamen in jeder Methode Refactoring ich aufgerufen wurde auf auf verstehen .

Wenn Sie ein legitimes Bedürfnis zu entfernen und sie ändern würde ich in Refactoring-Tools entweder die integrierte, oder so etwas wie ReSharper.

Allerdings würde ich mit Chris Conway zu einem gewissen Standpunkt zustimmen und fragen Sie, warum, ja, es ist ärgerlich, aber zugleich ein großer Teil der Zeit des „, wenn es aint't brach es done't zu beheben "Methode ist wirklich der beste Weg zu gehen!

Nur es ändern, wenn Sie direkt verwenden. Und stellen Sie sicher, dass Sie eine Testumgebung bereit anwenden müssen es nach wie vor, um sicherzustellen, funktioniert.

Ich bin damit einverstanden, dass der beste Weg, ungarische Notation auslaufen zu lassen ist Code Refactoring, wie Sie es ändern. Der größte Vorteil dieser Art von Refactoring zu tun, ist, dass Sie Unit-Tests schreiben sollte der Code um Sie zu modifizieren, so dass Sie ein Sicherheitsnetz haben, anstatt die Finger zu überqueren und in der Hoffnung, dass Sie vorhandene Funktionalität nicht brechen. Sobald Sie diese Unit-Tests an der richtigen Stelle, können Sie den Code zu Inhalt Ihres Herzens ändern.

Ich würde sagen, ein größeres Problem ist, dass man eine einzige Klasse mit 200 hat (!) Methoden!

Wenn ist dies ein viel hing von / viel veränderte Klasse dann könnte es sich lohnen, Refactoring, um es nutzbar.

In diesem ReSharper ist ein absolutes Muss (Sie die integrierten Refactoring Dinge verwenden könnte, aber ReSharper ist viel besser).

Starten Sie eine Gruppe von verwandten Methoden zu finden, und dann diese Refactoring in eine schöne kleine zusammenhängende Klasse aus. Update auf Ihre neuesten Code-Standards entspricht.

Übersetzen und Ihre Testsuite ausgeführt werden.

Haben Sie Energie für mehr? Extrahieren Sie eine andere Klasse.
Abgenutzte - keine Probleme; kommen Sie zurück und machen morgen ein paar mehr. In wenigen Tagen werden Sie das Tier erobert haben.

Ich bin mit @Booji - tun Sie es manuell, auf einer Pro-routinemäßig, wenn Sie bereits sind den Code aus einem anderen Grund zu besuchen. Dann werden Sie die häufigsten aus dem Weg zu bekommen, und wer kümmert sich um den Rest.

Ich dachte an eine ähnliche Frage zu stellen, nur in meinem Fall, der säumige Code ist meine eigene. Ich habe eine sehr alte Gewohnheit, mit „der schlechten Art“ der ungarischen von meinen FoxPro Tagen (die schwache Typisierung und ungewöhnliches Scoping hatte) - eine Gewohnheit, die ich habe erst vor kurzem geworfen.

Es ist schwer - es bedeutet, einen inkonsistenten Stil in Ihrer Code-Basis zu akzeptieren. Erst vor einer Woche sagte ich schließlich „schrauben“ und begann ohne den Buchstaben „p“ einen Parameternamen. Die kognitive Dissonanz ich anfangs gefühlt hat Weg zu einem Gefühl der Freiheit gegeben. Die Welt ist nicht gekommen, zu Ende.

Die Art und Weise Ich habe über dieses Problem gehen verändert sich eine Variable in einer Zeit, als ich über sie kommen, dann mehr radikale Veränderungen durchführen, wenn Sie zurückkommen weitergehende Veränderungen zu tun. Wenn Sie alles wie ich sind, wird die andere Nomenklatur Ihrer Variablen fahren Sie bat-shiat verrückt für eine Weile, aber Sie werden langsam verwendet werden, um es. Der Schlüssel ist, um es mit dem Chip weg ein wenig in einer Zeit, bis Sie alles zu haben, wo es sein muss.

Alternativ können Sie Ihre Variablen ganz über Bord werfen und haben nur jede Funktion Rückkehr 42.

Es klingt für mich wie das größere Problem ist, dass 200-Methode Gott Klasse Objekt. Ich würde vorschlagen, dass nur Refactoring die ungarische Schreibweise zu entfernen, ist ein Low-Wert, mit hohem Risiko Aktivität in sich selbst. Es sei denn, sich um diese Klasse eine reichliche Menge von automatisierten Unit-Tests ist man etwas Vertrauen in Ihrer Refactoring zu geben, ich glaube, Sie es gut und wirklich in Ruhe lassen sollen.

Ich denke, es ist unwahrscheinlich, dass eine solche Reihe von Tests besteht, weil ein Entwickler folgende TDD Praktiken würde (hoffentlich) natürlich vermieden haben in erster Linie einen Gott Objekt bauen - es wäre sehr schwierig für umfassende Tests zu schreiben.

Die Beseitigung des Gott-Objekts und eine Unit-Test-Basis anstelle immer höheren Wert ist, jedoch. Mein Rat wäre, nach Möglichkeiten zu suchen, die Klasse selbst Refactoring - vielleicht, wenn eine geeignete Geschäftsanforderung / Änderung kommt daher, dass eine Änderung an diesen Code erfordert (und damit hoffentlich kommt mit einigen System & Regressionstests gekauft und bezahlt). Sie könnten nicht in der Lage sein, den Aufwand von Refactoring das Ganze in einem Rutsch zu rechtfertigen, aber Sie können für Stück ihm Stück tun, wie die Gelegenheit kommt, und die Änderungen Testfahrt. Auf diese Weise können Sie langsam den Spaghetti-Code in eine sauberere Codebasis mit umfassenden Unit-Tests, Stück für Stück konvertieren.

Und Sie können die ungarische beseitigen, wie Sie gehen, wenn Sie möchten.

Ich tue eigentlich die gleiche Sache hier für eine Anwendungserweiterung. Mein Ansatz war, VIM-Mappings zu verwenden für bestimmte ungarische Notation Präfixen zu suchen und sie dann löschen und Kapitalisierung gegebenenfalls zu beheben.

Beispiele (geht in vimrc):

"" Hungarian notation conversion helpers
"" get rid of str prefixes and fix caps e.g. strName -> name
map ,bs /\Wstr[A-Z]^Ml3x~
map ,bi /\Wint[A-Z]^Ml3x~
"" little more complex to clean up m_p type class variables
map ,bm /\Wm_p\?[A-Z]^M:.s/\(\W\)m_p\?/\1_/^M/\W_[A-Z]^Mll~
map ,bp /\Wp[A-Z]^Mlx~

Wenn Sie gonna break Code nur aus Gründen des Refactoring sind, dann würde ich ernsthaft in Erwägung ziehen i allein zu lassen, vor allem, wenn Sie andere Personen in Ihrem Team beeinflussen wollen, die an diesem Code werden in Abhängigkeit können.

Wenn Sie Ihr Team mit diesem Refactoring in Ordnung ist, und investieren Sie Ihre Zeit in, dies zu tun (was eine Zeitersparnis in der Zukunft sein kann, wenn es die Codemittel sind besser lesbar / wartbar), verwenden Sie Visual Studio (oder was auch immer IDE Sie verwenden) Sie den Code zu helfen Refactoring.

Wenn jedoch eine große Veränderung, wie dies kein Risiko ist Ihr Team / Chef bereit ist, zu nehmen, würde ich einen etwas unorthodoxen, auf halbem Weg Ansatz vorschlagen. Statt in einem Zug alle Refactoring zu tun, warum nicht Codeabschnitte Refactoring (genauer gesagt, Funktionen), die während der normalen Wartung berührt werden? Im Laufe der Zeit dieses langsame Refactoring den Code zu einem saubereren Zustand bringen, wobei an diesem Punkt können Sie den Refactoring-Prozess mit einem letzten Schwung beenden.

Ich liebe ungarische Notation. verstehen nicht, warum würden Sie wollen, um loszuwerden, es.

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