Frage

Ich habe jetzt schon eine ganze Weile OOP studiert und ich habe ein gutes Verständnis der Theorie. Ich lese die Head First Buch über OOP, und während es eine Menge der verstärkten Theorie, fand ich die Fallstudien etwas trivial sein.

Ich finde, dass ich OOP-Prinzipien zu meinen Code jeden Tag bin Anwendung, aber ich bin nicht sicher, ob ich sie richtig bin Anwendung. Ich muß auf den Punkt kommen, wo ich in der Lage bin an meinem Code zu suchen und wissen, ob ich Erbe angemessen bin mit, ob mein Objekt geschlossen genug ist, etc.

Hat jemand eine gute Empfehlungen (Bücher, Online-Ratgeber, Blogs, gehen Durchführungen, etc.) für die Entwicklung solide OOP Fähigkeiten des nächsten Schritt?

Ich arbeite in erster Linie in .NET (Visual Basic), aber ich begrüße Vorschläge, die verschiedenen Plattformen integrieren.

War es hilfreich?

Lösung

Lesen Sie

Refactoring von Martin Fowler, und es auf Ihre eigene Arbeit.

Es wird Sie durch eine Litanei von übelriechend Eigenschaften von Software-Code zu nehmen, die beschreiben, wie falsch konstruierten Klassen zu erkennen, und was noch wichtiger ist, wie sie zu beheben.

Andere Tipps

Betrachten in Design Patterns suchen. Obwohl es, wie sie häufig nicht in Enterprise-Anwendungen verwendet, scheint (ich habe sich häufiger in APIs und Frameworks verwenden gesehen als in Enterprise-Code eingebettet), könnten sie angewandt werden, um Software einfacher und robuster in vielen Situationen zu machen, wenn nur Entwickler wussten, wie sie anzuwenden.

Der Schlüssel ist die Design-Muster zuerst zu verstehen, dann mit Erfahrung, die Sie lernen, wie sie anzuwenden.

Es gibt ein Head First Buch über Muster design , dass das Konzept lehrt ziemlich einfach, obwohl, wenn Sie ein Buch will, die wirklich Designmuster im Detail umfasst das Buch Gang of Four Muster Design überprüfen , die im Grunde ist das, was Design Patterns Mainstream gemacht und das Thema gebracht wird, bis zu fast jeder Zeit bezeichnet wird.

Design-Muster können in so ziemlich jede objektorientierte Sprache bis zu einem gewissen Grad oder einem anderen angewendet werden, auch wenn einige Muster zu viel des Guten kann oder über Engineering in einigen Fällen.

EDIT:
Ich möchte auch hinzufügen, sollten Sie das Buch Code Complete 2 überprüfen. Es ist ein sehr einflussreiches Buch in der Welt der Software-Entwicklung. Es umfasst viele verschiedene Konzepte und Theorien. Ich lerne etwas Neues jedes Mal wenn ich es lesen. Es ist so ein gutes Buch, wenn ich es alle 6 Monate bis ein Jahr zu lesen, sehe ich es aus einer anderen Perspektive, das mich zu einem besseren Programmierer nur durch Re-Lektüre macht. Egal, wie viel Sie vielleicht denken, Sie wissen, wird dieses Buch Sie gerade machen klar, wie wenig Sie wirklich wissen. Es ist wirklich ein großartiges Buch. Ich kann gar nicht genug betonen, wie viel Sie dieses Buch besitzen sollten.

Wenn Sie bereits die Grundlagen haben, glaube ich, nur Erfahrung werden Sie weiter erhalten. Sie sagen, Sie nicht sicher sind, ob Sie die Grundsätze richtig anwenden, aber es gibt keine eine richtige Art und Weise. Code, den Sie heute schreiben, werden Sie an in 6 Monaten Zeit aussehen, und ich fragen, warum du es so geschrieben, und wahrscheinlich von einem besseren, saubereren Weg wissen, es zu tun. Ich garantiere auch, dass nach 10 Jahren, werden Sie immer noch neue Techniken und Tricks lernen. Sie nicht zu viel Sorgen, es wird kommen, lesen Sie nur so viel, wie Sie können, und versuchen, das anzuwenden, was Sie in kleine Stücke zu lesen.

Ich bin derzeit auf halbem Weg durch das folgende Buch:

http://www.amazon.com/Applying-UML-Patterns-Introduction -object Orientiertes / dp / 0131489062

Ich kann dieses Buch nicht stark genug empfehlen in Bezug auf einen wirkliches Leben, professionelle, praktischen Ansatzes bei der Ausarbeitung Lernen und eine wohlgeformte und iterative Designstrategie vor dem Tauchen in Code der Anwendung.

Auch wir lesen Sie das " Head First " Buch und fühlten, dass ich viel besser für sie gelesen zu haben.

ein paar Jahre Arbeitswelt Erfahrung Nachdem ich sehe jetzt den Craig Larman Buch, das ich für mich einen perfekter „nächster Schritt“ zu sein, bin zu empfehlen.

über die Anwesenheit von "UML" in diesem Buch Titel:

Ob Sie positive Gefühle oder negative Gefühle über UML-Notation haben, wenden Sie sich bitte, dass der Einfluss Ihre Entscheidung nicht lassen das Buch (ISBN 0131489062) in beiden Richtungen zu kaufen.

Die Bedeutung von „UML“ im Titel ist irreführend. Während der Autor UML-Notation nicht verwendet und erklären, sind diese Erklärungen sehr gut gewebt in relevante Design Diskussionen und zu keinem Zeitpunkt dieses Buch wie eine langweilige UML-Spezifikation lesen.

In der Tat, hier ist ein Zitat direkt aus dem Buch:

  

Was ist wichtig zu wissen, wie in Objekten zu denken und Design, das als zu wissen, UML-Notation eine ganz andere und viel mehr wertvolle Fähigkeit ist. Während ein Diagramm zeichnen, müssen wir wichtige Fragen beantworten: Was sind die Aufgaben des Objekts? Wer kennt sie arbeiten mit? Welche Entwurfsmuster angewendet werden sollte? Weit wichtiger als zu wissen, den Unterschied zwischen UML 1.4 und 2.0!

Dieses Buch manchmal scheint, wie es einen leitenden Architekten oder Projektmanager „zu sprechen“. Was ich damit meine, dass zu sagen ist, dass es davon ausgeht, dass der Leser eine wesentliche Kontrolle über die Planung und Leitung eines Softwareprojekts.

Dennoch, auch wenn Sie nur verantwortlich für einige sehr kleines Stück Ihres Unternehmens Projekte und Produkte sind, würde ich noch empfehlen dieses Buch und empfehlen Ihnen, einige „abgespeckte“ Modifikationen des Buches Beratung für Ihr Stück des Projekts anzuwenden .

Meine OOP Epiphanie kam von Grady Booch Buch, Art und Weise vor langer Zeit. Plötzlich wurde mir klar, Warum Objekte waren gut.

Während Polymorphismus ist cool, Verkapselung ist 75%, warum Objekte sind cool. Es ist so etwas wie eine Schnittstelle: Sie können die Tasten zu sehen, aber nicht die Verkabelung. Bevor Objekte, nur die disziplinierten Coder behielten ihre schmuddeligen Finger weg von den internen Bits anderer Leute Verfahren (es war „strukturierte Programmierung“ genannt).

Objekt macht es einfach, das Richtige zu tun. Vererbung und Polymorphismus sind kleine Boni.

Eine Möglichkeit, um Objekte zu lernen, ist andere Leute Code zu lesen. Ich habe viel gelernt, indem Sie den Quellcode für den Delphi VCL-Framework zu lesen. Auch nur für Java in der Dokumentation suchen werden Sie helfen, zu sehen, was eine einzelne Objektklasse tun soll und wie es konzipiert ist von anderen Objekten verwendet werden.

Starten Sie ein Projekt Ihrer eigenen und Aufmerksamkeit zahlen, wenn Sie auf die Unterklasse Ihre eigenen Klassen wollen und feststellen, dass Sie gehen müssen zurück und brechen einige geschützte Methoden, so dass Sie nur ein Teil eines Prozesses außer Kraft setzen können, anstatt alle zu ersetzen, davon. Sehen Sie, wie Vorfahren Nachkommen sprechen von abstrakten Funktionen aufrufen. Mit anderen Worten, gehen viele Fehler machen und von ihnen zu lernen.

Viel Spaß!

Ehrlich gesagt, Re-Lektüre alte David Parnas Papiere auf Information Hiding hilft ich in dem richtigen Zustand des Geistes zu bekommen. Die Fallstudien nicht direkt anwendbar sein können, aber Sie sollten einige nützliche Verallgemeinerungen aus ihnen erhalten können.

Meine Epiphanie geschah, als ich versuchte, ein sehr OO Problem (dynamisch und rekursiv Aufbau von SQL-Anweisungen) in VB6 zu implementieren. Der beste Weg, Polymorphismus oder Vererbung zu verstehen, ist es zu brauchen und nicht in der Lage sein, es zu benutzen.

Eine Sache, die definitiv helfen Sie arbeiten an einem bekannten, angesehenen Open-Source-Projekt. Entweder graben durch den Quellcode und sehen, wie Dinge getan werden oder versuchen, einige Ergänzungen / Änderungen vornehmen. Sie werden feststellen, dass es nicht einen Stil oder eine richtige Antwort für die meisten Probleme, aber durch an mehreren Projekten suchen, werden Sie in der Lage sein kann, einen weiten Blick auf, wie die Dinge erledigen werden. Von dort werden Sie beginnen, Ihren eigenen Stil zu entwickeln und hoffentlich einige Beiträge Open Source in dem Prozess.

Ich glaube, Sie zu versuchen haben und nicht OO-Lösungen bei der Umsetzung. Das ist, wie ich es trotzdem tat. Was ich meine ist, dass Nicht-Bestehen Sie stinkenden Code schreiben zu landen, während erfolgreich eine funktionierende Lösung zu liefern. Nachdem es geschrieben werden Sie ein Gefühl dafür bekommen, wo die Dinge haben Recht nicht ganz fühlen. Sie können einige Epiphanien haben, und / oder Sie können für eine Slicker Lösung von anderen Programmierern gehen und jagen. Ohne Zweifel werden Sie einige Variationen von Standard-Design-Muster zufällig implementieren. Im Nachhinein wird ein Licht klicken Sie (oh! So das ist, was ein Besucher ist), und dann wird das Verständnis beschleunigen.

Wie andere gesagt haben, ich glaube, Werkzeuge durch einige gute OO Open-Source-Code ist eine gute Idee. So arbeitet mit erfahrenen Programmierern, die bereit wären, um Ihre Arbeit zu kritisieren. Jedoch Verständnis kommt durch das Tun.

Sie können versuchen wollen lesen (und schreiben) etwas Smalltalk für eine Weile. Squeak ist eine freie Implementierung, die Ihnen die Leistung einer vollständig objektorientierte Umgebung zeigen kann (im Gegensatz zu Java oder .net). Alle Bibliothek Quellcode ist enthalten. Die Sprache selbst ist denkbar einfach. Sie werden feststellen, dass Java und C # finden fügen sich langsam die Merkmale bekannten seit 1980 Smalltalk

Tortoise HG ist extrodanarily gut entworfenes Stück OO offen Source-Software (geschrieben in Python).

Wenn Sie bereits die Grundlagen verstehen, etwas zu bauen von Grund auf in einem vollständig orientierten Sprachobjekt wird ein guter Schritt in vollständig Verständnis OOP Software-Architektur sein. Wenn Sie nicht wissen, Python, Python Grundlegende Referenz wird Sie durch die nehmen in voller Sprache in ein paar Tagen bis zu einer Woche.

Nachdem Sie verstehen die Sprache zu sehen, durch die Software oben und Sie werden alle Arten von Epiphanien haben.

Um zu verstehen, im Grunde alles gründlich, benötigen Sie eine anständigen Kenntnisse der darunter oben und eine Ebene mindestens eine Abstraktionsebene haben. Im Fall von OO, haben andere als die Schicht über OO-Design-Muster genannt. Dies hilft, eine Menge zu verdeutlichen, warum OO nützlich ist.

Was die Schicht unter OO, versuchen Sie mit Funktionen höherer Ordnung zu spielen, um / spät für eine Weile Bindung und ein Gefühl dafür bekommen, wie diese relativ einfache Konstruktionen verwendet werden. Versuchen Sie auch, zu verstehen, wie OO unter der Haube (vtables, etc.) durchgeführt wird und wie es in reinem C durchgeführt werden Sobald Sie den Wert der Verwendung von Funktionen höherer Ordnung und die späte Bindung grok, werden Sie schnell erkennen, dass OO nur eine bequeme Syntax für um eine Reihe von verwandten Funktionen geben und den Daten, die sie operieren.

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