Ihr erstes Szenario gilt für die Neuerfindung des Rades, das sich selbst erklärt.
Das zweite Szenario gilt NICHT, wenn der vorhandene Code nur geringfügig geändert werden muss. Wenn dies jedoch der Fall ist, sollten Sie versuchen, ähnliche Eigenschaften, Methoden und Verwendungszwecke wie bei einem vorhandenen Code zu verwenden, damit andere Entwickler keine Probleme mit der Verwendung Ihres Codes haben "Rad".
Seien Sie vorsichtig mit dem Ansatz "Es ist immer besser, von vorne zu beginnen". Es kann länger dauern, als Sie erwarten.
Das dritte Szenario, das Sie erwähnen, ist der "praktische" Ansatz. Das "gegebene Rad" kann die Arbeit erledigen, verbraucht aber in Wirklichkeit zu viel Ressourcen, Speicher, Geschwindigkeit usw.
Ich habe einmal in einer Anwendung gearbeitet, in der hierarchische Daten in einem Treeview-Steuerelement aus einer einzelnen Tabelle angezeigt werden müssen. Wir haben bereits ein Steuerelement, das dies tun könnte, aber mehrere Tabellen pro Element unterstützt.
Um es zu benutzen, musste ich zu viele Dinge lernen, zu viele Eigenschaften zuweisen, zu viele Methoden ausführen und es war langsam. Ein Mitarbeiter bestand darauf, es zu benutzen, um "das Rad nicht neu zu erfinden".
Ich habe ein neues Steuerelement von Grund auf neu erstellt, eine einzelne Tabelle gelesen und nur einige leicht zu erlernende Eigenschaften programmiert. Und bevor ich es wusste, gab es einen anderen Mitarbeiter, der es aus dem gemeinsam genutzten Code-Repository nahm und das vorherige Steuerelement ersetzte.
Bonus:
Wenn das Rad, das Sie bereits haben, "quadratisch" ist. Mit "quadratisch" meine ich, dass es an der Oberfläche so aussieht, als ob es eine Lösung für Ihr Problem darstellt, aber nach einem guten Blick kommen Sie zu dem Schluss, dass dies nicht der Fall ist.
Es hängt davon ab, ob Sie über die Fähigkeiten und die Zeit (und Ihre Unternehmensberechtigung) verfügen, um das Rad neu zu erfinden.