Ankündigung

Einklappen
Keine Ankündigung bisher.

Ab welcher Projektgröße lohnt sich OOP?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ab welcher Projektgröße lohnt sich OOP?

    Hallo,
    ich sitze gerade an einer Mini-Aufgabe und habe dafür nen Haufen Klassen und Verwaltungs-Klassen erstellt. Wie so oft war für mich der Weg das Ziel (allerdings muss das Ziel auf morgen fertig sein) und ich habe wieder elendig lang gebraucht.

    Klassen:
    MovieManager
    Movie
    Actor
    Director
    etc.

    Ab welcher Projektgröße lohnt sich der Einsatz eigentlich, denn ich bin mir sicher, ich hätte es prozedural mindestens doppelt so schnell hinbekommen. Oder liegt das eher an meiner wohl mangelnden praktischen Erfahrung, dass ich mit OOP deutlich langsamer bin?

    Wie schnell ist bei euch der Zeitunterschied beim kompletten Erstellen (Konzeption, Programmierung, Testen) bei OOP vs Prozedural?

    Klar braucht OOP immer etwas länger und ist damit aber auch gleich wiederverwendbar, aber dass ich soviel länger brauche...Oder ist der Betreff falsch gewählt und es müsste heißen, ab der wievielten Wiederbenutzung lohnt sich OOP?

  • #2
    Re: Ab welcher Projektgröße lohnt sich OOP?

    Zitat von Zergling
    Wie schnell ist bei euch der Zeitunterschied beim kompletten Erstellen (Konzeption, Programmierung, Testen) bei OOP vs Prozedural?
    Ich habe mich noch nicht gebenchmarkt
    Aber klar, ich denke man kann sagen, dass objektorientiertes Programmieren ein wenig zeitaufwendiger ist.

    Zitat von Zergling
    Ab welcher Projektgröße lohnt sich der Einsatz eigentlich [...]?
    Ich arbeite eigentlich viel objektorientiert, die OOP kommt bei mir auch schon bei nicht ganz so großen Projekten zum Einsatz, da ich es einfach übersichtlicher und angenehmer finde, objektorientiert zu programmieren. Weiterhin finde ich den modularen Aufbau und die Wiederverwendbarkeit des Codes sehr vorteilhaft.

    Kommentar


    • #3
      Und benutzt du größtenteils die Klassen auch wieder (außer ganz alltäglichen Klassen wie vielleicht der eigenen DB-Klasse) oder machst du sie letztlich dann doch neu (so ist das leider bei mir manchmal)?

      Wie siehts mit PEAR aus, benutzt du/ihr das und bringt das einen nicht unerheblichen Zeitgewinn?

      Kommentar


      • #4
        Zitat von Zergling
        Und benutzt du größtenteils die Klassen auch wieder (außer ganz alltäglichen Klassen wie vielleicht der eigenen DB-Klasse) oder machst du sie letztlich dann doch neu (so ist das leider bei mir manchmal)?
        Meine Template-Klasse, sone Art Konfigurations-Klasse, einen Error-Handler und eine Klasse mit ein paar Hilfsfunktionen verwende ich hauptsächlich wieder.

        Zitat von Zergling
        Wie siehts mit PEAR aus, benutzt du/ihr das und bringt das einen nicht unerheblichen Zeitgewinn?
        PEAR kommt bei mir wenig zum Einsatz, weil ich in Sachen Programmierung zu den Leuten gehöre, die immer alles selbst machen wollen

        Kommentar


        • #5
          Zitat von Corvin Gröning
          Zitat von Zergling
          Und benutzt du größtenteils die Klassen auch wieder (außer ganz alltäglichen Klassen wie vielleicht der eigenen DB-Klasse) oder machst du sie letztlich dann doch neu (so ist das leider bei mir manchmal)?
          Meine Template-Klasse, sone Art Konfigurations-Klasse, einen Error-Handler und eine Klasse mit ein paar Hilfsfunktionen verwende ich hauptsächlich wieder.

          Zitat von Zergling
          Wie siehts mit PEAR aus, benutzt du/ihr das und bringt das einen nicht unerheblichen Zeitgewinn?
          PEAR kommt bei mir wenig zum Einsatz, weil ich in Sachen Programmierung zu den Leuten gehöre, die immer alles selbst machen wollen
          Dito.

          Ich verwende eigentlich meine Klassen immer irgendwo mal wieder, besser sie aus .. etc.
          [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

          Kommentar


          • #6
            Eigentlich immer OOP selbst wenns nur Kleinigkeiten sein aber da wo sich ein Objekt anbietet setzt ich es auch ein. Meistens kommen bei mir die Klassen nie zum 2. Einsatz außer bei so Klassen wie Datenbankschnitstelle, RandomString Generator oder zb. n ThumbCreator aber alle anderen Klassen landen irgendwo im Archiv und werden dort auch begraben

            Aber der Vorteil von OOP liegt klar auf der Hand nämlich der modulare Aufbau des Codes späteres austauschen geht "fast" problemlos.

            Ich hab mal von irgendjemanden gehört das OOP Performancelastiger sei aber das halte ich persönlich für unwahrscheinlich es sei den ich instanziere 50.000 Objekte
            Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

            Kommentar


            • #7
              OOP hat ja auch den Ansatz was schon geschaffenes wieder benutzen zu können ... egal wie klein es ist ... ist es arbeit ...
              [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
              | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

              Kommentar


              • #8
                Zitat von robo47
                OOP hat ja auch den Ansatz was schon geschaffenes wieder benutzen zu können ... egal wie klein es ist ... ist es arbeit ...
                Das ist ein Argument Und prozedurales Zeug etwa nicht? Wenn man es richtig macht, dauert das Lösen einer Aufgabe mit prozeduralem Code wahrscheinlich noch länger als mit der OOP.

                Nehmen wir mal an, ich schreib einen Request-Container, also ein Skript, das den Request zur Verfügung stellt:

                Code:
                class SRequest {
                    var $args = array(); // Argumentnamen
                    var $argv = array(); // Argumentwerte
                    var $argc = 0; // Anzahl der Argumente
                }
                
                function &request_create()
                {
                    $req = new SRequest();
                
                    // hier füll ich die Argumente von $_POST/$_GET in diese Instanz
                
                    return $req;
                }
                
                function request_delete($request)
                {
                    unset($request); // nur der förmlichkeit halber, funktioniert natürlich nicht
                }
                
                function request_get_arg($request, $argname)
                {
                    // Schleife, die den Argumentnamen sucht und den Wert zurückgibt
                }
                
                
                function request_set_arg($request, $argname, $argvalue)
                {
                    // Schleife, die den Argumentnamen sucht und den Wert ändert, bzw den Argumentnamen neu anlegt
                }
                
                // usw.
                Ich nutze Klassen als C-ähnliche Strukturen. Angewandt wird das dann folgendermaßen:

                Code:
                include_once("request.php");
                
                $req = &request_create();
                $seite = request_get_arg(&$req, "seite");
                request_delete(&$req);

                Kommentar


                • #9
                  Naja für C-Strukturen könnte man genauso gut Assoc Arrays nehmen

                  Mann hat halt mit Klassen - vor allen in PHP5 durch die Magic Functions __get und __set - die Möglichkeit das Füll- und Rückgabeverhalten der Eigenschaften zu beeinflussen.

                  Genauso wie es jetzt mittels __call möglich ist Methoden zu überladen wenn es auch auf den 1. Blick etwas merkwürdig aussieht.

                  PHP-Code:
                  <?php
                  class MethodNotExistsException extends Exception {}
                  class 
                  Foo
                  {
                      public function 
                  __call($methode$params)
                      {
                          
                  $FUNCTION "_" $methode "_" ;
                          
                          foreach (
                  $params as $param)
                          {
                              
                  $FUNCTION .= '_' gettype($param);
                          }
                          
                          if (!
                  method_exists($this$FUNCTION))
                              throw new 
                  MethodNotExistsException();
                          
                          return 
                  call_user_method($FUNCTION$this$params);
                      }
                      
                      protected function 
                  _bar__string_string($params
                      {
                          return 
                  $params[0] . $params[1];
                      }
                      
                      protected function 
                  _bar__string_integer($params)
                      {
                          
                  $ret "";
                          for (
                  $i=1$i<= $params[1]; $i++)
                          {
                              
                  $ret .= $params[0];
                          }
                          return 
                  $ret;
                      }
                  }

                  $F = new FOO();

                  echo 
                  $F->bar("Hallo ""Welt");
                  echo 
                  "
                  "
                  ;
                  echo 
                  $F->bar("Hallo
                  "
                  3);
                  ?>
                  Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                  Kommentar


                  • #10
                    Ja ich geb zu, bei mir ist gestern auch der Knoten geplatzt und plötzlich gingen die "kompliziertesten" Aufrufe mit ein paar Instanzierungen und Methodenaufrufen. Sehr fein

                    Frage an euch noch, benutzt jemand den Debugger der in der ZDE4/5 eingebaut ist oder welchen benutzt ihr? Und wie kann man damit GET oder POST-Parameter mitübergeben?

                    Edit: LOL wie krass. Sieht voll unübersichtlich aus, aber ist nen Versuch wert, kannte ich nocht garniht ^^

                    Kommentar


                    • #11
                      Ja wie gesagt wenn man C/C++ gewohnt ist siehts echt merkwürdig aus auf den 1. Blick aber für eine Script die nicht explizit einen Datentyp verlangt ist das in PHP5 gut gelöst.

                      Man könnte auf die Art und Weise auch bei Eigenschaften einen Datentyp festlegen.
                      Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                      Kommentar


                      • #12
                        Wollte mal kurz anfragen, ob jmd. ein gutes Buch über OOP mit PHP kennt. Wollte mich in die Materie mal einarbeiten.

                        Dank und Gruß,
                        Andreas

                        Kommentar


                        • #13
                          Ist zwar ein Buch was sich allgemein mit PHP5 befasst aber ich kanns durchaus empfehlen auch in Bezug auf OOP

                          PHP5 - Grundlagen und Profiwissen
                          http://www.joergkrause.de/buecher/bo...p?selection=17
                          Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                          Kommentar


                          • #14
                            OOP in PHP.
                            Kauf dir wenn ein Buch über OO, in dem über OOA, OOD und Entwurfsmuster gesprochen wird.
                            Das hilft definitiv eher weiter als ein PHP-Buch ..
                            [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

                            Kommentar


                            • #15
                              Zitat von Ben
                              OOP in PHP.
                              Kauf dir wenn ein Buch über OO, in dem über OOA, OOD und Entwurfsmuster gesprochen wird.
                              Das hilft definitiv eher weiter als ein PHP-Buch ..
                              naja aber anwenden ist dann immer noch so ne Sache wenn keine Beispiele drinnstehen für die entsprechende Sprache

                              Dann lieber ein Sprachbezogenes Buch und die Grundlagen irgendwo aus nen Tutorial wie zb.
                              Crashkurs OOP Teil 1: Klassen und Objekte
                              Crashkurs OOP Teil 2: Klassenvererbung
                              Crashkurs OOP Teil 3: Polymorphie
                              Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                              Kommentar

                              Lädt...
                              X