Wie wird man gut im objektorientierten Analysieren und Entwerfen (OOAD)?


26

Ein guter Analysator und Designer zu werden, kann einem Entwickler große Vorteile bringen. Aber es gibt definitiv Hindernisse dafür. Nicht jeder ist an OOAD interessiert und nicht jeder, der interessiert ist, kennt den Weg. Sollte ein guter OOAD mehrere OO-Sprachen beherrschen? Oder sollte er / sie gescheiterte Projekte haben? Wie kann man ein guter OOAD werden?

Antworten:


34

Leute, die nicht interessiert sind, erschaffen ihre eigenen Hindernisse. Darüber kann ich mir keine Sorgen machen.

Für diejenigen, die den Weg nicht kennen, schlage ich vor:

  • Ich finde, dass jede OO-Sprache, die ich lerne, mich zu einem besseren OO-Entwickler macht. Es kann viel von jeder Sprache in die andere gebracht werden, solange Sie die Community finden.
  • Sie lernen mehr aus Fehlern als aus Erfolgen, aber versuchen Sie dies in Ihrer Freizeit. Vertrauen Sie beruflich zumindest zeitweise auf diejenigen mit mehr Erfahrung - aber haben Sie keine Angst, nach dem Warum zu fragen.
  • Lernen Sie alle fünf SOLID-Prinzipien kennen und verstehen Sie, warum sie existieren. Keine von ihnen sind Regeln, aber sie sind gute Richtlinien, wenn Sie verloren sind.
  • Test Driven Development hat meine OO-Designfähigkeiten mehr verbessert als alles andere, was ich jemals gelernt habe.
  • Sie werden nicht Ihr Bestes geben, bis Sie von Underengineering zu Overengineering gewechselt sind und dann das richtige Gleichgewicht gefunden haben (näher an letzterem).
  • Tatsächlich werden Sie nie so gut sein, wie Sie es zwei Jahre später sein werden.
  • Lies viele Bücher und Blogs, aber nimm nichts als Evangelium. Diese Branche hat immer noch keinen perfekten Weg gefunden und wird ihn vielleicht nie finden.
  • Lernen Sie auf jeden Fall Designmuster, aber suchen Sie nicht nach Orten, an denen Sie sie verwenden können, sondern nutzen Sie sie einfach als Kommunikationsmittel.

Hoffe, dass etwas davon hilft.


1
Gute Liste @pdr. +1
Saeed Neamati

5
+1 "Hat noch keinen perfekten Weg gefunden und wird ihn vielleicht nie finden."
Ocodo

1
+1 "Test Driven Development hat meine OO-Designfähigkeiten mehr verbessert als alles andere, was ich jemals gelernt habe."
Kevin Cline


Dank habe ich eine Frage für SOLID Diskussion programmers.stackexchange.com/questions/155852/...
LCJ

5

Ich denke, um das OO-Modell voll zu verstehen, müssen Sie Erfahrung mit Nicht-OO-Programmiertechniken haben, die kläglich scheitern. Sie können OO von innen und außen verstehen, aber um es zu schätzen und zu respektieren, muss es ein glänzendes neues Werkzeug sein, das das alte rostige Werkzeug ersetzt, das seine Aufgabe nicht ganz erfüllt hat.

Ich habe mich 7 Jahre lang selbst beigebracht, bevor ich schließlich OO in Java auf College-Niveau lernte. Vorher habe ich diese Projekte ständig ausgebaut und sie wurden so groß, dass ich vergaß, was zum Teufel los war. Sie wären sperrig, unorganisiert und erfordern viel Wartung, um geringfügige Änderungen vorzunehmen. Grundsätzlich war ich ständig mit meinem Code beschäftigt und fing immer wieder von vorne an.

Es dauerte eine Weile, bis ich mich von dem von mir übernommenen linearen Design gelöst hatte, aber als ich das OO-Modell vollständig verstanden hatte, war es wie bei Eureka! Ich konnte selbst viel komplexere Projekte programmieren und meine Produktivität schoss durch das Dach, nachdem ich Konzepte wie Vererbung gelernt hatte. Ich verschwende keine Zeit damit, Code neu zu schreiben oder von vorne zu beginnen, weil objektiv alles Sinn macht und es nur intuitiv ist.

Meiner Meinung nach sollte jeder Programmierer so viele Sprachen wie möglich beherrschen. Dies macht sie zu einem erfahrenen Veteranen, egal ob OO oder nicht. Sobald Sie OO verstanden haben, können Sie diese Techniken überall dort anwenden, wo sie implementiert sind.

IMHO, wenn Sie nicht verstehen oder keine Lust haben, OO zu lernen, werden Sie auf dem Schlachtfeld des Lebens unzureichend ausgerüstet sein. Immer mehr Unternehmen verwenden neuere OO-Sprachen. Ich sehe keinen Grund , das OO-Modell heutzutage nicht zu kennen.

Je nachdem, wie die Person lernt, liegt es an ihnen, wie sie das Modell lernen möchten. Ich persönlich lerne am besten, wenn mich jemand unterrichtet, und deshalb hat der Besuch von Java I und Java II einen großen Unterschied für mich bewirkt. Ich würde empfehlen, Wahlfächer für Softwaretechnik am College zu belegen oder einfach online zu gehen und nach OO-Tutorials zu suchen, wenn Sie keinen Zugang zu College-Kursen haben oder in Ihrer Freizeit lernen möchten.

Wenn ich daran zurückdenke, wie es mir beschrieben wurde, sage ich; Ein Apfel ist ein Apfel und eine Orange ist eine Orange. Ja, beide fallen von Bäumen, aber es sind zwei völlig verschiedene Früchte und da liegt deine Harmonie.


1
Meinten Sie klägliches Versagen bei der funktionalen Programmierung oder klägliches Versagen bei der prozeduralen Programmierung?
Andrew Grimm

Mit funktionaler Programmierung kläglich versagen, aber nicht in der Beherrschung versagen. Ich meine, die erfolgreiche Implementierung scheitert an ihren Grenzen.
Styler

Sie meinten also definitiv funktionale Programmierung, nicht prozedurale Programmierung?
Andrew Grimm

Nicht-OO-Programmierung.
Styler

2
Ich würde definitiv vorschlagen, dies zu editieren, da nicht-OO! Dinge können sogar beides sein.
Magus

0

Es gibt immer Hindernisse für diejenigen, die interessiert sind oder nicht, aber der Kontext und die Schwere können variieren.

Es ist nicht notwendig, dass Sie mehrere Sprachen für OO-Konzepte lernen müssen. Beginnen Sie mit einer Sprache, die Sie mögen. Im Laufe der Zeit werden Sie einen starken Einfluss auf die Sprache haben. Posten Sie dies, um einige Dinge zu erforschen, die Sie getan haben bereits und versuchen, das gleiche in einer anderen Sprache auszuführen. Das Fachwissen in einer Sprache hilft beim Umstieg auf eine neue Sprache, da Sie einen Bewertungsmaßstab haben.

Jedes Projekt ist eher eine Lernerfahrung als ein Erfolg. Entscheidend ist, wie gut Sie die Funktionen für Ihre optimale Nutzung angepasst haben. Gelegentlich ist es gut, anderen Code zu lesen und herauszufinden, wie und warum dies geschehen ist. Wenn Sie einen Mentor finden, wäre das großartig. Kennen Sie immer den Grund, warum dies gewählt wird. Wie wäre es, wenn Sie es auf eine andere Weise tun. Versuchen Sie, an Ihrem eigenen Logik- und Designmodell zu arbeiten und es Ihrem Senior / Mentor zu überlassen. Auf diese Weise würden Sie Ihre Fähigkeiten verbessern, vielleicht gehen sie zu Beginn direkt in den Mülleimer, aber dann haben Sie versucht und gelernt, was Sie falsch gemacht haben. Iterativ würde es dir immer besser gehen.

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.