Frage

Meine Frage ist einfach;Ist es möglich, Ihren Code zu stark objektorientiert zu gestalten?

Wie viel ist zu viel?An welchem ​​Punkt geben Sie zugunsten von OO die Lesbarkeit und Wartbarkeit auf?

Ich bin ein großer OO-Mensch, aber manchmal frage ich mich, ob ich meinen Code zu kompliziert mache ...

Gedanken?

War es hilfreich?

Lösung

ist es möglich, über Objekt-ausrichten-code

Ja

Andere Tipps

Wenn Sie denken, mehr Objekte, mehr Objekt-orientiert, dann ja.

Wenn dabei die Objekt-orientierter design-es gibt ein paar Kräfte, die Sie haben zu balancieren.Die meisten OO-design ist reduziert und den Umgang mit Komplexität.Wenn man also sehr komplexe Lösungen du bist nicht zu viel zu tun OO aber du machst es falsch.

Wenn Sie finden, dass die Zeit benötigt, um vollständig zu implementieren OO in Ihrem Projekt ist unnötig verursacht verpasste Fristen, dann ja.

Es muss ein trade-off zwischen der Freigabe von software-und full-OO treue.Wie Sie entscheiden, hängt von der person, dem team, das Projekt und die Organisation der Ausführung des Projekts.

Ja, es gibt natürlich auch :-) Objekt-orientierte Techniken sind ein Werkzeug ...wenn Sie verwenden das falsche Werkzeug für eine bestimmte Aufgabe, Sie über die Dinge komplizieren (denken Löffel, wenn alles, was Sie brauchen, ist ein Messer).

Zu mir, ich beurteilen, "wie viel" von der Größe und dem Umfang des Projekts.Wenn es ist ein kleines Projekt, manchmal ist es nicht hinzufügen zu viel Komplexität.Wenn das Projekt groß ist, Sie werden immer noch auf diese Komplexität, aber es wird für sich selbst zahlen in einfache Wartbarkeit, Erweiterbarkeit, etc.

Mein Rat ist, nicht zu overthink es.Das führt in der Regel über oder unter ETWAS tun (wenn nicht OO).Die Faustregel, die ich normalerweise verwende, ist dies:wenn es macht das problem einfacher zu wickeln meinem Kopf herum, ich verwenden Sie ein Objekt.Wenn ein anderes Paradigma macht es einfacher zu wickeln meinem Kopf herum, als es wäre, wenn ich ein Objekt habe, verwende ich das.

Diese Strategie hat aber für mich nicht.

Ja, es ist definitiv möglich-gemeinsame, entweder.Ich habe einmal mit einem Mann, der erstellt eine Daten-Struktur zu binden, um eine dropdown-Liste-so kann er es sich erlauben die Benutzer zu wählen Sie ein Geschlecht.Stimmt, das wäre nützlich, wenn die Liste der möglichen Geschlechter waren zu ändern, aber Sie haben sich nicht, wie bisher (wir don ' T live in California)

Ja, wie kann man über-Normalisierung einer Datenbank-design.

Dies scheint einer jener puristischen vs.pragmatische Debatten, die nie zu Ende.<:S

Eine Menge Leute versuchen, Ihre design-code für maximale Flexibilität wiederverwenden, ohne zu berücksichtigen, wie wahrscheinlich das sein wird.Stattdessen brechen Sie Ihre Klassen basierend auf dem Programm, das Sie schreiben.Wenn Sie genau eine Instanz eines bestimmten Objekts, ziehen Sie in Betracht Verschmelzung mit dem Objekt mit.

Ich denke, Ihre Frage zu Lesen, "Kann man über die Architektur Ihrer Anwendung?"

Und natürlich ist die Antwort doch.OO ist nur ein Ansatz zu design.Wenn Sie Ihre Zeit verbringen Gebäudes unnötige Komplexität in ein system, da "Polymorphismus Rocks!".Dann ja vielleicht, sind Sie über OOing.

Die sehr XP Antwort ist, dass Unabhängig davon, welchen Ansatz Sie bevorzugen (OO -, Verfahrens -, etc.) das design sollte nur so Komplex sein, wie Sie nachweislich notwendig.

Ja, Sie können.Als ein Beispiel, wenn Sie finden, sich selbst erstellen von Schnittstellen oder abstrakten Klassen vor, Sie haben zwei Untertypen für Sie, dann bist du over -, es zu tun.Ich sehe diese Art des Denkens Häufig, wenn Entwickler (mehr) - design-up-front.Ich verwende Test-Driven-Development und Refactoring-Techniken, um dieses Verhalten zu vermeiden.

ist es möglich, über Objekt-ausrichten-code?

Nein.Es ist aber möglich, über komplizieren code.Für Beispiel, Sie verwenden können design-Muster für die sake der Verwendung von design patterns.Aber Sie kann nicht über Objekt-ausrichten-code.Ihr code ist entweder Objekt-orientiert, oder es ist nicht.So wie dein code ist entweder gut entwickelt oder nicht.

Ich denke, es ist möglich, aber seine schwer zu beantworten Ihre in abstrakten Begriffen (kein Wortspiel beabsichtigt).Geben Sie ein Beispiel über OO.

Ja.Finden Sie das Konzept von "golden hammer antipattern"

Ich denke, es gibt Zeiten, OO-design, können ergriffen werden, um eine extreme und auch in sehr großen Projekten den code weniger lesbar und wartbar.Für Beispiel, es kann verwendet werden in eine Schuhen Basisklasse, die Kind-Klassen, von sneaker, dress shoe, etc.Aber ich habe gelesen/überprüft people ' s code, wo es schien, als ob Sie im Begriff waren, zu den extremen erstellen von Klassen unter, die für NikeSneakers und ReebokSneakers.Sicherlich gibt es Unterschiede zwischen den beiden, aber lesbaren, wartbaren code, ich glaube, es ist wichtig, in Zeiten, erweitern Sie eine Klasse, um anzupassen, um die Unterschiede eher als die Schaffung von neuen untergeordneten Klassen zu behandeln, die Unterschiede.

Ja, und es ist leicht.Code ist nicht besser, nur weil es Objekt-orientierte, mehr, als es ist besser, einfach weil es modular oder funktionale oder generische oder generative oder Datenfluss-basiert oder Aspekt-orientierte oder irgendetwas anderes.

Guter code ist guter code, denn es ist gut-entwickelt in seiner Programmier-Paradigma.

Gutes design erfordert Sorgfalt.

Vorsichtig nimmt sich Zeit.

Ein Beispiel für Ihren Fall:Ich habe gesehen, schreckliche Stücke von Java, in denen der name von "Objekt-orientierte", jede Klasse implementiert einige interface, auch wenn keine andere Klasse wird je implementieren Sie dieses interface.Manchmal ist es ein hack, aber in andere, es ist wirklich kostenlos.

In welchem Paradigma oder idiom Sie code schreiben, zu weit zu gehen, wenn wir zu viel des guten sind, der kann den code komplizierter als das problem.Einige Leute werden sagen, Wann dieser Punkt erreicht ist, dass der code nicht einmal wirklich, für Beispiel, Objekt-orientiert mehr.

Object-oriented code sollte besser organisiert werden für die Zwecke der einfacheren, eher gerade-vorwärts, oder einfacher zu verstehen und zu verdauen, die in relativ unabhängige Teile.Über die Mechanismen der Objekt-orientierten Codierung antithetically, um dieses Ziel hat nicht Ergebnis in Objekt-orientierten design .

Ich denke, die klare Antwort ist ja, aber abhängig von der Domäne, in die Sie sich beziehen, könnte es WIRKLICH ja, oder weniger also ja.Wenn Sie sind Gebäude hohem Niveau .Net-oder Java-apps, dann denke ich, das ist das letztere, als OO ist im Grunde integrierte in die Sprache.Auf der anderen Seite, wenn Sie arbeiten an embedded apps, dann werden die Gefahren und die Wahrscheinlichkeit, dass Ihr über OO ' Ing sind hoch.Es gibt nichts Schlimmeres als zu sehen, ein wirklich hohes Maß person auf ein embedded-Projekt und über die Dinge zu komplizieren, dass Sie hässlich sind, aber die meisten sind einfache und schnelle Möglichkeiten, um Dinge zu tun.

Ich denke etwas "übertrieben".Dies gilt für fast alle beste Praxis, die ich denken kann.Ich habe gesehen, Vererbung Ketten so Komplex war der code nahezu unüberschaubar.

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