Frage

Ich habe oft gehört, dass Objekte nicht in Bezug auf die Wiederverwendung von Code geliefert wurden. Sind Sie einverstanden? Wenn Sie glauben, dass sie es nicht haben, warum nicht?

War es hilfreich?

Lösung

Nein, nicht unbedingt.

Objekte bieten eine bessere Semantik, Organisation von Code/Funktionalität und möglicherweise Benutzerfreundlichkeit.

Gut designed Bibliotheken Liefern Sie das Versprechen der Code -Wiederverwendung, nicht die Objekte an sich.

Andere Tipps

Ehrlich gesagt bin ich mir nicht sicher, ob "Code -Wiederverwendung" wirklich das ist, wonach jemand ist (oder zumindest danach sein sollte). Meine Philosophie ist "Softwarekomponenten", was eine bessere Wartbarkeit durch gute Schnittstellen und eine unnötige Kopplung bedeutet. "Code -Wiederverwendung" ist eines der Dinge, die manchmal aus dem herausfallen - unnötig doppelter Code ist ein Zeichen dafür, dass Sie die Dinge falsch organisiert haben, und natürlich ist es ein Schmerz, aufrechtzuerhalten.

Um die Frage ein wenig direkter zu beantworten, gibt es eine Sammlung von ziemlich guten Tools, um sich zu vermeiden, sich selbst zu wiederholen: Erbschaft, Eigenschaften, Delegation, Funktionen höherer Ordnung usw. von diesen, Menschen neigen dazu, die Erbschaft mit OO als Ganzes zu verwechseln-und neigen Sie neigen auch dazu, es ein bisschen zu überbeanspruchen, wenn Sie mich fragen. Vielleicht kommt dort ein Teil der "Oo Sucks" -Time: Das Finden der Erbschaft, die dort steckt, wo es kein natürliches Recht hat :)

Nein, "Objekte" haben die Code nicht mehr einfacher oder häufiger gemacht. Die gleichen Bedenken, die verhindern, dass Code in einem modularen Programm wiederverwendet wird (das Entwerfen, Testen und Dokumentieren einer allgemeinen API erfordert erheblich mehr Aufwand als ein einmaliges Routine, und die Buchse aller Geschäfte kann die sein Master of None-Logik, die wiederverwendet werden sollen Code.

OO ist eine praktische Abstraktion für viele Probleme, aber sei des Hype der 80er-Jahre-90er Jahre: Sie löst die grundlegenden Probleme unseres Handels nicht mehr auf magische Weise als Waffeln für Sie, während Sie schlafen.

Ich erwarte nicht, dass alle Objekte wiederverwendet werden, aber wir haben viel Objekt, das wir bei vielen verschiedenen Projekten wiederverwenden. Wir haben auch Objekte, die nur von einem Projekt wiederverwendet werden. Wir verbrauchen häufig die gleichen Geschäftsobjekte (oder Datenübertragungsobjekte) sowie Geschäftslogikobjekte aus einer Click-Once-Desktop-App, einer Web-App und einer Telefon-App für dasselbe Projekt.

Wo haben Sie gehört, dass OO keine Wiederverwendung liefert? Und was war die Argumentation? Vielleicht hat das Design ihrer Objekte sie in diese Situation gezwungen ...

Einige Programmierer kopieren und fügen Sie jede Sprache und jeden Stil ein.

Wirklich gute Programmierer können die meisten kopieren und in fast jeder Sprache einfügen.

Ich finde, dass OO -Muster dazu neigen, die Wiederverwendung zu fördern. Ich habe Java-Code gesehen, der in einem Nicht-Oo-Stil geschrieben wurde (wo die Daten aufgrund von beschissenem ORM vom Code getrennt wurden) und die Wiederverwendung wirklich elend war-aber in OO haben die gleichen Programmierer einen besseren Job bei Design (Design ( und wiederverwenden).

Auch in Fällen, in denen wir Nicht-OO-Muster oder OO-Anti-Patters wie Setter/Getter, Switch-Anweisungen, anonyme innere Klassen, große Funktionen und dergleichen gesehen haben, wie ich die Wiederverwendung von Code abgingen und die Boilerplate erheblich stiegen.

ps. Ich weiß, dass die Leute Probleme mit dem vorherigen Absatz haben werden, also werde ich ein bisschen erklären.

Setzer und Getter verursachen OO -Probleme, da Sie mit den Mitgliedern eines Objekts arbeiten können (ein Objekt sollte seine eigenen Mitglieder manipulieren). Dies verteilt den Code, der in Ihrer Klasse in anderen Klassen arbeitet . Dies gilt auch für Eigenschaften-nur weil die Eigenschaften sie einfacher sind, macht sie in allen Situationen nicht "gut".

Der Code in anonymen inneren Klassen kann überhaupt nicht wiederverwendet werden und die Leute vergessen, dass viele Dinge (wie Zuhörer) vollwertige Klassen sein können und sollten-dies gilt auch für Schließungen! Wenn Sie eine anonyme innere Klasse verwendet haben, um so etwas wie einen Hörer zu implementieren, ist es viel wahrscheinlicher, dass Sie Ihre Implementierung nur kopieren und einfügen, als den Code in eine Methode zu extrahieren, oder es ist stattdessen eine eigene Klasse. Verschlüsse können auch die Wiederverwendbarkeit verbessern-nur davon hängt, wie Sie sie verwenden.

In vielen Fällen formen die Funktionen, die Ihnen zur Verfügung stehen, wie Sie Ihren Code strukturieren. OO ist noch leistungsfähiger, wenn es darum geht, Ihren Codes und die Interaktion zu unterstützen, aber das ist eine andere Frage.

Objekte können nicht mehr Code -Wiederverwendung liefern, als ein Treppenklima oder andere Fitnessgeräte Gewichtsverlust liefern können. Entwickler müssen motiviert sein, Tools richtig zu verwenden.

Sobald Software-Teams einen höheren Wert bei der Wiederverwendung getesteter Code als bei der Aufbewahrung aller Details im Kopf einsetzen, werden Sie weitaus feinkörnigere Objekte und Methoden und damit mehr Code-Wiederverwendung sehen.

Ja

OOP gibt Ihnen mehr Möglichkeiten, Code wiederzuverwenden

Nein

Es gibt keine Silberkugel

Es hängt davon ab, ob

auf das, was Sie hineingesteckt haben und was Sie als Gegenleistung erwartet haben!

Ja. Eine gute objektorientierte Programmierung fördert die Trennung von Bedenken, niedrige Kopplung, hoher Zusammenhalt und Informationen, die sich verstecken. Diese Dinge sind alle für den wiederverwendbaren Code von entscheidender Bedeutung.

Ich würde argumentieren, dass der Hauptvorteil von OOP eher Modularität und Modifizierbarkeit als Wiederverwendung ist, aber das ist eine andere Frage.

Objekte ermöglichen Code-Wiedereinsetzungen, aber als solches ist dies nicht die am meisten technische Technik. Ich denke, die Wiederverwendung von Code wird durch objektbezogene Techniken wie Vererbung, Polymorphismus, Überlastung und Vorlagen gefördert.

Ja, die Fähigkeit, (Erben) aus einer Superklasse zu erweitern, trägt zur Wiederverwendung von Code bei. Ich bin mir nicht sicher, wie jemand etwas anderes argumentieren könnte. Sie können einfach eine Klasse erweitern und eine Methode überschreiben, während Sie den Rest aus der Superklasse verwenden. Wenn dies nicht bei der Wiederverwendung von Code hilft, weiß ich nicht, was ist

Wenn es so ist, dass sie ihr bisheriges Versprechen der Code -Wiederverwendung erteilt haben? Ja, wenn die mit OOP geschriebenen Programme Designmuster mit Bedacht anwenden. Ansonsten meistens nein. Aber in der Popularität von nicht trivialen Programmen in großem Maßstab, die Adobe Systems, Google und dergleichen mit C ++ oder Java oder anderen OOP -Sprachen schreiben, würde ich sagen, dass OOP noch einen langen Weg vor sich hat, bevor es herausgeht. Diese Zeit wird weitaus besser geeignet, um diese Frage zu stellen, und könnte dazu beitragen, Bodarbeiten für ein neues Paradigma zu liefern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
scroll top