Hat objektorientiertes Design einen Platz in der Webentwicklung? [geschlossen]

8

Ich arbeite in einem Webentwicklungsgeschäft, also beschäftigen wir uns natürlich mit Benutzerprofilen. Beim Umgang mit einer unserer Seiten habe ich festgestellt, dass es keine 'User'-Klasse gab, was mir seltsam vorkam, da wir sicherlich Nutzer haben. Stattdessen beruht die Site auf der Interaktion mit DataRows (dies ist C #), die durch statische Methoden mit wenig oder keiner Instanziierung zurückgegeben werden. Ich fragte meinen Chef nach einer Klasse für Benutzer und seine Antwort war, dass, da die Objekte so oft neu aufgebaut werden müssen, es sich nicht lohnt.

Ich bin relativ neu in der Webentwicklung und es scheint ein bisschen eine Verschwendung zu sein, Objekte jedes Mal neu zu erstellen, wenn die Seite neu aufgebaut wird, aber auf der anderen Seite habe ich immer objektorientierte Programmierung als nützlich empfunden. Ich bin neugierig auf einige Meinungen, wie viel nutzen Sie OOP in der Webentwicklung?

    
Trajanus 29.12.2009, 19:45
quelle

7 Antworten

11

Die einzige Zeit, in der ich OOP nicht verwende, ist:

  1. Ich erstelle ein einfaches Projekt, um etwas Logik zu testen. Dies führt normalerweise dazu, die richtigen Klassen zu erstellen ...

  2. Ich benutze Classic ASP (war eine Weile, Gott sei Dank).

  3. Ich programmiere nicht.

Bearbeiten 3+ Jahre nach dem Posten des oben genannten; Ich füge ein wenig zu meiner Antwort hinzu.

OOP ist großartig und ermöglicht uns eine enorme Flexibilität, mehrere Systeme mit derselben Daten / Logik interagieren zu lassen. Allerdings gibt es sicherlich eine Situation, in der Sie nicht viele Objekte laden möchten. Nämlich, wenn Sie einfach Daten für die tabellarische Anzeige ziehen.

Das Abrufen einer Datenbank und das Abrufen eines einfachen Datensatzes, der sofort an den Browser gesendet wird, benötigt normalerweise kein OOP. In der Tat möchten Sie möglicherweise OOP vollständig umgehen, da tabellarische Daten in der Regel eine Zusammenfassung anderer Informationen (Summen von untergeordneten Datensätzen) enthalten und Sie normalerweise nicht mehr Daten aus der Datenbank abrufen möchten, als Sie tatsächlich verwenden. dh. Wenn Sie nur den Namen und die E-Mail-Adresse anzeigen, möchten Sie wahrscheinlich nicht den Benutzernamen abrufen, da dies nur verschwendete Zyklen ist.

Um Informationen in eine Datenbank zu packen, müssen Sie normalerweise sicherstellen, dass bestimmte Geschäftslogik eingehalten wird. Zum Beispiel folgt der Benutzername bestimmten Regeln. In diesen Situationen hält die Verwendung eines OOP-Stils die Dinge ein wenig eingekapselt und kann leicht zwischen Systemen übertragen werden.

Wenn wir uns das spezifische Beispiel ansehen: Ich würde mich nicht mehr damit beschäftigen, als einem Datenrepertor eine Datentabelle zu übergeben, wenn Daten abgerufen werden. aber ich hätte eine Benutzerklasse, wenn ich eine neue erstellen oder mit diesem Benutzer arbeiten möchte, um sicherzustellen, dass die Geschäftsregeln korrekt eingehalten werden.

    
NotMe 29.12.2009 21:13
quelle
5

Ihr Chef ist (leider) ein Idiot. OO hilft dabei, gut strukturierten, wartbaren Code zu erstellen. Die Objekterstellung ist extrem schnell und auch die Garbage Collection von kurzlebigen Objekten ist sehr schnell.

Was Sie hier haben, ist eine vorzeitige Optimierung, die zu einem fragilen Code führt.

    
Paolo 29.12.2009 19:51
quelle
3

OOP ist nichts anderes als ein Programmierparadigma ! aber seine Bedeutung ist, dass hi DAS aktuelle Paradigma ist, was bedeutet, dass alle modernen Kenntnisse und Best Practices im Software-Engineering nach diesem Stil der Programmierung ausgedrückt werden ...

Ein gutes Beispiel in Ihrem Fall (Web-Entwicklung) ist das Core J2EE Patterns

alt text http://java.sun.com/blueprints/corej2eepatterns/images06/figure06_02.gif

    
wj. 29.12.2009 21:05
quelle
3

Eine Frage: Müssen die Daten mit Funktions- / Methodenaufrufen gekoppelt werden? Wenn nicht, ist OOP nicht notwendig .

Ihr bester Ansatz könnte sein, ein leeres Whiteboard zu finden, ein High-Level-Modell mit Object Oriented Design, dann mit Functional Design und dann mit Procedural zu erstellen. Sie könnten sich selbst (und andere) mit den Ergebnissen überraschen. Die gleiche Sprache kann je nach Projekt auf sehr unterschiedliche Weise verwendet werden. Wie von @wj erwähnt. OOP ist nur ein Paradigma, haben Sie keine Angst, aus Ihrer Komfortzone zu treten und mit einem anderen Paradigma zu arbeiten.

Sich Zeit zu nehmen, um mit verschiedenen Paradigmen zu arbeiten, wird Ihnen auch helfen, wenn Sie sich Ihrem Chef nähern, um zu diskutieren, warum Sie das aktuelle Paradigma verwenden sollten oder nicht. Die meisten Chefs werden es zu schätzen wissen, dass Sie die Zeit für Recherchen aufgewendet haben, bevor Sie sie mit einer Idee ansprechen - das soll nicht heißen, dass sie Ihre Idee akzeptieren, aber wenn Sie sachkundig reingehen, werden Sie möglicherweise ein paar zusätzliche Minuten seiner Aufmerksamkeit bekommen .

IMHO (nehmen Sie das nicht persönlich), "objektorientierte Programmierung" ist mit "Web 2.0" gefallen - ein Schlagwort von Art, was bedauerlich ist; Sie sehen jetzt, dass Entwickler OOP dort einsetzen, wo es besser für die Verwendung von FP oder PP geeignet wäre.

Der beste professionelle Rat, den ich geben kann besteht darin, in mehreren Paradigmen zu entwerfen (zuerst auf hohem Niveau, dann abzutauchen) (tu dein Bestes, nicht voreingenommen zu sein - sei unvoreingenommen) und entscheide Welches ist am besten geeignet für die Anwendung Ihrer Anwendung? In meinen 15 Jahren Erfahrung, 75% der Zeit finde ich OOP unnötig, obwohl mein aktuelles Projekt streng OOP ist.

Eine wichtigere / relevante Frage wäre: "Hat objektorientiertes Design einen Platz in meiner aktuellen Webentwicklung?"

    
kmatheny 14.10.2012 16:40
quelle
1

Natürlich tut es das. Sie (und mehr noch Ihr Chef) sagen "Wiederaufbau", als wäre es eine große Aufgabe.

Was Sie mit "neu aufbauen" meinen, ist das Ausführen des Programms. Sagen Sie Ihrem Chef, dass OOP im Allgemeinen dumm ist, da selbst in einer Desktop-Umgebung jedes Mal, wenn jemand eine Software ausführt, die Objekte neu aufgebaut werden müssen, so dass es sich nicht einmal lohnt.

    
Tyler Smith 29.12.2009 19:53
quelle
1

Boss Kommentar ist nutzlos. Das .net-Framework besteht aus Objekten und nichts anderem. Eine "Antwort" ist ein Objekt, selbst in "klassischem ASP" - warum haben die Leute es implementiert, wenn das Ressourcen unwirksam waren?

    
naivists 29.12.2009 21:20
quelle
1

Obwohl Objekte einigen Programmierern die Entwicklung erleichtern, habe ich das perfekte Beispiel dafür gelesen, wie man eine ganze Website ohne OOP erstellt. Nicht einmal Unze. Schauen Sie sich die letzte Seite in einer 20-seitigen Serie mit dem Titel Clean PHP an:

Ссылка

Sehr einfach zu befolgende, saubere Art, eine komplette Website zu erstellen. Kein verwirrendes OOP, kein super verschachtelter Ordner, kein verrückter Spaghetti-Code für Stunden ... Einfach einfache, saubere und gut durchdachte Funktionen, die ALLES tun, was Sie brauchen, ohne OOP zu verwenden. Und dieses Beispiel hat alles von Login / Registrierung Anmeldeinformationen, ein Admin-Bereich (CMS), sogar Datenbank-Fixtures, um loszulegen, eine Suchfunktion, die Mapquest-API verwendet, um PLZ / lat-long-Lookups zu tun ... Ich meine, es hat ALLES für ein Kernprojekt oder eine Website.

Warum sollten Sie sich mit OOP beschäftigen? Sauberer und richtig strukturierter Code ist großartig!

Zum Thema OOP. Ich erinnere mich an eine andere Modeerscheinung, dass alle dachten, dass es cool ist, und jeder hat es getan, aber dann herausgefunden, dass das Rauchen Ihnen eine ganze Reihe von Problemen bereitet hat.

Bleib beim einfachen, bleib bei dem, was du weißt. Seien Sie ein Experte in PHP und Sie müssen sich nie wieder auf ein Framework verlassen. Lass mich nicht mit OOP MVC Frameworks anfangen. Interpretierte Sprachen für das Web sollten niemals OOP sein. OOP fügt nur eine weitere Ebene der Komplexität hinzu. Sei nicht so faul. Verwenden Sie Ihr PHP und lernen Sie, wie man Programm flippt!

Auf der anderen Seite kann ich sehen, wie es ohne OOP schwierig wird, Spiele auf einer Konsole zu erstellen. Aber es sind Äpfel und Orangen. Konsolenspiele behalten ihre Objekte im Speicher, bis das Spiel beendet wird oder das Objekt aus dem Spiel zerstört wird. Denken Sie darüber nach ... Warum haben sie vor jedem Level einen Ladebalken? Stellen Sie sich nun eine Webseite vor, die bei jedem Ladevorgang eine Ladezeile anzeigt, da sie Objekte aus einer Datenbank erstellen muss. SLLOOOOOOWWWWW zentral! Und wenn du von dieser Seite weg navigierst, musst du noch einmal von vorne anfangen.

Webseiten sind Anwendungen in sich. Es ist, als würde man seinen Drag Racer jedes Mal neu aufbauen, wenn man an die Startlinie geht, nur um ihn an der Ziellinie auseinander zu nehmen. WTFridge? Ernst? Hey, Super-Genies, die denken, OOP ist sooo cool ... Halte deine verdammte OOP von meinen Webseiten fern!

Ich sage nur, dass dies aus meiner mehr als zehnjährigen Erfahrung in der Webentwicklung stammt, wissen Sie, wann wir Seiten nacheinander in HTML programmiert haben?

    
Webmaster G 07.08.2012 19:51
quelle

Tags und Links