Robert21: Programmierstil - OOP, prozedural oder beides?

Hi!

Ich hab mal ne Frage zum Programmierstil bei PHP.
Im allgemeinen gilt ja objektorientierte Programmierung
ist dort sinnvoll, wo das ganze deutlich komplexer ist
als seine Teile.

Ich hab jetzt ein Projekt wo man (durch Vererbung &
Codewiederverwendung) deutliche Vorteile durch OOP
bekommen würde. Am einfachsten wäre das ganze jedoch zu
programmieren indem 80% objektorientiert mit Klassen
programmiert wäre und 20 % prozedural.

Daher meine Frage: Macht diese Mischform Sinn oder wird
die Wartung (bei dem Projekt wichtiger Faktor) deutlich
komplizierter dadurch?
Soll ich alles (also auch nur einmal genutzten Code in
Klassen packen, so das die Websites dann eben nur aus
dem Aufrufen von Klassenkonstruktoren und -Methoden
besteht oder ist die Mischform legitim?

Vielen Dank
Robert

  1. Hi,

    Ich hab jetzt ein Projekt wo man (durch Vererbung &
    Codewiederverwendung) deutliche Vorteile durch OOP
    bekommen würde. Am einfachsten wäre das ganze jedoch zu
    programmieren indem 80% objektorientiert mit Klassen
    programmiert wäre und 20 % prozedural.

    [x] Make it so.

    Daher meine Frage: Macht diese Mischform Sinn oder wird
    die Wartung (bei dem Projekt wichtiger Faktor) deutlich
    komplizierter dadurch?

    Das kannst nur Du entscheiden. PHP ist eine funktionale Sprache - dort sind Funktionen in diversen Fällen deutlich einfacher zu handhaben, OOP drauf zu setzen verkompliziert die Sache dann nur. Wenn Du allerdings ...

    Soll ich alles (also auch nur einmal genutzten Code in
    Klassen packen, so das die Websites dann eben nur aus
    dem Aufrufen von Klassenkonstruktoren und -Methoden
    besteht oder ist die Mischform legitim?

    ... ein Konzept findest, durch welches diese Funktionen gruppier- und kapselbar werden, dann mache dies. Eine Mischform ist per se ein Nachteil, OOP für funktionale Dinge ist jedoch ebenfalls per se ein Nachteil. Einen Königsweg kann ich Dir nicht anbieten.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,

    Soll ich alles (also auch nur einmal genutzten Code in
    Klassen packen, so das die Websites dann eben nur aus
    dem Aufrufen von Klassenkonstruktoren und -Methoden
    besteht oder ist die Mischform legitim?

    also ich kenn keine größere Web-Applikation, die keinen prozeduralen Code enthält.

    Man kapselt bestimmte Funktionalitäten in Klassen, (z.B. funktionen um Nachrichten zu senden, löschen, lesen etc.) und der entsprechende Aufbau der Seite erfolgt dann prozedural.
    Natürlich muss man immer wissen, wieviel Logik man in Klassen packt.

    Grüße
    Klaus

  3. Hallo,

    Ich hab jetzt ein Projekt wo man (durch Vererbung & Codewiederverwendung) deutliche Vorteile durch OOP bekommen würde. Am einfachsten wäre das ganze jedoch zu programmieren indem 80% objektorientiert mit Klassen programmiert wäre und 20% prozedural.

    und was hält dich davon ab?

    Daher meine Frage: Macht diese Mischform Sinn oder wird die Wartung (bei dem Projekt wichtiger Faktor) deutlich komplizierter dadurch?

    Bei realen Projekten wird sich *immer* eine Mischform ergeben. Ein Projekt *rein* objektorientiert anzugehen, ist eher eine akademische Variante; in der Praxis macht man sich die Aufgabe damit meist unnötig kompliziert.
    Mach die Mischform, dokumentiere das Projekt sauber. Das ist IMHO die beste Lösung. Die genaue Aufteilung (welcher Anteil prozedural, welcher Anteil OO) wird je nach Projekt variieren; aber 100% das eine oder andere ist selten praktikabel.

    Soll ich alles (also auch nur einmal genutzten Code in» Klassen packen, so das die Websites dann eben nur aus dem Aufrufen von Klassenkonstruktoren und -Methoden besteht oder ist die Mischform legitim?

    Legitim ist das, was zu einem korrekt funktionierenden Ergebnis führt, und darüber hinaus noch nachvollziehbaren und überschaubaren (und damit auch wartbaren) Quellcode ergibt.

    So long,
     Martin

    --
    Arzt:    Gegen Ihr Übergewicht hilft wohl nur noch Gymnastik.
    Patient: Sie meinen, Kniebeugen und so?
    Arzt:    Nein, Kopfschütteln. Immer dann, wenn Ihnen jemand was zu essen anbietet.
  4. Moin,

    Ich hab mal ne Frage zum Programmierstil bei PHP.
    Im allgemeinen gilt ja objektorientierte Programmierung
    ist dort sinnvoll, wo das ganze deutlich komplexer ist
    als seine Teile.

    Korrekt.

    Daher meine Frage: Macht diese Mischform Sinn oder wird
    die Wartung (bei dem Projekt wichtiger Faktor) deutlich
    komplizierter dadurch?
    Soll ich alles (also auch nur einmal genutzten Code in
    Klassen packen, so das die Websites dann eben nur aus
    dem Aufrufen von Klassenkonstruktoren und -Methoden
    besteht oder ist die Mischform legitim?

    Nervig wird es, wenn diese Mischform nicht möglich ist, z.B. in Java. Ich habe in den letzten Monaten an einer Java-App gearbeitet. Serverseitig Java EE auf einem JBoss Server. Als Klient gibt es ein Applet und eine HTML-Version. Der Java EE-Teil (Logik und Datenhaltung) ist komplett objektorientiert.

    In den Clients gibt eine ganze Menge Funktionen, die in keine Klassen passten. Die sind jetzt in einer Klasse namens Util gesammelt, die nur auf statischen Funktionen besteht.

    Sowas wirst in jeden etwas größeren Projekt finden. Und zumindest ein Teil ist *immer* prozedural: Der Teil der die ersten Klassen aufbaut. In Java ist das zwar in einer Klasse als main-Methode verpackt, aber im Prinzip arbeitst du da prodzedural. Und in PHP brauchst du auch mindest eine Datei, die die ersten Objekte deiner Klassen erzeugt.

    Gruß

    Stareagle