Wie gehe ich mit der Philosophie der Wiederverwendung von Code um?


10

Ich denke ständig über die Wiederverwendung von Code nach, wenn ich ein neues Projekt starte.

Inwieweit sollte ich meinen Code wiederverwendbar machen?
Sollte ich es auf den Anwendungsbereich beschränken oder sollte ich es außerhalb des Projekts wiederverwendbar machen?

Manchmal habe ich das Gefühl, dass die Wiederverwendbarkeit von Code einem einfachen Design im Wege steht. Bitte teilen Sie Ihr eigenes Verständnis und Ihren Ansatz der Wiederverwendbarkeit von Code mit.


Antworten:


21

Der Code muss funktionieren, bevor er wiederverwendet werden kann. Dies impliziert, dass Design und (primäre) Funktion vor der Prüfung der Wiederverwendung von Code erfolgen sollten.

Es ist gut, an die Wiederverwendung und die Wiederverwendung von Komponenten zu denken, die Sie bereits geschrieben haben. Aber es kann manchmal genauso schnell sein, wenn nicht sogar schneller, den Code zu schreiben und zum Laufen zu bringen. Nachdem Sie das ursprüngliche Problem gelöst haben, können Sie den Code umgestalten, um ihn wiederverwendbarer zu machen.


2
Ist das "war" im ersten Satz ein Tippfehler "hat"?

@delnan - was "war"? :-) Danke, dass du das verstanden hast.

9

Erinnere dich an KISS und YAGNI:

Code, re-usability better to be consideredsobald Sie Ihr Designdokument fertig haben . Auf diese Weise können Sie den Abschnitt / die Teile des Codes anzeigen, die möglicherweise dupliziert werden.

Wenn Sie also kein klares Design haben, wenden Sie den KISS- und YAGNI- Ansatz in Ihrer Arbeit an!


1

Dies ist aus meiner Erfahrung, aber ich glaube immer noch, dass es angewendet werden kann und in Anlehnung an das, was GlenH7 erwähnt hat.

Ich arbeite zwischen 3 Unternehmen, die verschiedene Projekte durchführen. Die Unternehmen sind Schwestern voneinander mit einigen Standardpraktiken und Arbeitsmethoden, sind aber auch in vielerlei Hinsicht einzigartig. Nachdem dies gesagt wurde, beginne ich jedes Projekt im Allgemeinen neu und möchte es einfach erledigen oder Fortschritte zeigen. Wenn ich dann auf ein Szenario stoße, in dem ich mich an einen Code oder eine Funktionalität erinnere, die ich für ein vorheriges Projekt geschrieben habe, mache ich eines von zwei Dingen (zeitabhängig):

  1. Schnellste Methode
    Kopieren Sie den vorherigen Code aus dem anderen Projekt (haben Sie nicht viel Zeit) in mein aktuelles Projekt.
  2. Zweitschnellste Methode
    Kopieren Sie den vorherigen Code und platzieren Sie ihn in einer gemeinsamen Bibliothek. Fügen Sie diese Bibliothek dann in das aktuelle Projekt ein (um das Vorankommen zu erleichtern).

    2b. Wenn ich Änderungen am anderen (ursprünglichen) Projekt vornehme, überarbeite ich es, um die neue Bibliothek zu verwenden [dies wird jedoch im Allgemeinen nicht der Fall sein, es sei denn, ich muss das Projekt erneut berühren].

Seien Sie gewarnt und testen Sie die allgemeinen Bibliotheken. Gemeinsame Bibliotheken bedeuten das Erstellen von Abhängigkeiten. Abhängigkeiten führen zu Fehlerquellen. Obwohl Sie für Ihre aktuelle Implementierung möglicherweise eine geringfügige Änderung benötigen, wissen Sie nicht, wie sich durch die Verwendung dieser Bibliothek etwas anderes ändert.


Warum eine einzelne Implementierung von etwas verwenden, wenn Sie vier oder fünf haben können, die identisch sind? Ihre "schnellste" Methode ist nur kurzfristig am schnellsten.
Caleb

@Caleb: Einverstanden. Ich habe nie gesagt, dass es elegant ist, nur dass Fristen Fristen sind. Während eines Refactors erkenne ich mehrere Projekte mit demselben Code und gehe sie durch und teile sie in ihre eigenen Bibliotheken auf. Aber wenn ich es aus der Tür holen muss, funktioniert Copy-Paste. Es gibt mir auch Flexibilität, Änderungen für dieses eine Projekt vorzunehmen, und ich berücksichtige diese Änderungen, wenn ich die Bibliothek aufteile und sie sowohl solide als auch flexibel gestalten möchte.
Brad Christie

1

Manchmal finde ich, dass das Kopieren und Einfügen einiger Codezeilen eine bessere Lösung ist. Selbst in der menschlichen Sprache, wenn Sie einen Satz sagen möchten, den Sie zuvor nur mit einer geringfügigen Abweichung gesagt haben, wiederholen Sie ihn mit der Abweichung, da dies für niemanden weniger Probleme bereitet.

Wenn Ihr großes Modul jedoch auf eine etwas andere Weise verwendet werden muss, die es nicht unterstützt, klonen Sie es nicht, um nur wenige Zeilen zu ändern, da es sehr wahrscheinlich ist, dass Sie die Funktionalität sowohl der Basis als auch der Basis erweitern möchten Klonanteil in der Zukunft. Machen Sie es stattdessen einfach konfigurierbar oder exportieren Sie die Funktionen, die sowohl die Basis als auch der Klon gemeinsam nutzen, in ein anderes Modul, das beide verwenden werden.


0

Übertreibe es nicht. Und wenn Sie sich nicht sicher sind, bleiben Sie beim Anwendungsbereich, bis Sie genügend Projekte geschrieben haben, um zu sehen, wo Sie was wiederverwenden können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.