Archiv für OOP
15. Dezember 2009 um 10:00 · Gehört zu Design Pattern, OOP, Usability
Oh wie kryptisch. Heute nur ein kurzer Beitrag rund ums Thema Rückgabewerte und Code-Optimierung was Lesbarkeit betrifft. Bin letzte Woche eher zufällig mit einem Kollegen über das Thema gestolpert und obwohl es so trivial ist, hat es mich nicht losgelassen. Und zwar geht es um die Wert-Range von false. Was wird eigentlich alles als false im weitesten Sinne interpretiert?
PHP nimmt es bei Wertvergleichen standardmäßig nicht so genau. Die Vergleichs-Operatoren gleich bzw. ungleich (== und !=, oh jetzt kratze ich wirklich an den Basics) sind zunächst ja nicht Typen beeindruckt. Weniger was Lederjacken-Träger angeht, als die Werte von Variablen.
Für ganz Genaue müssen da schon die Operatoren === (Identisch) und !== (Nicht identisch) herhalten. Mit welchen Operatoren man Variablen vergleichen sollte, ist wieder mal Geschmackssache. Ich halte das in der Regel wie folgt: Geht es um einen wichtigen Vergleich - eine Typ-Validierung in einer Setter-Methode beispielsweise - nutze ich die strengen Operatoren. Bei einer unkritischen Abfrage von Rückgabewerten (wie gesagt, sie muss unkritisch sein) bediene ich mich oft bei den Standard-Operatoren.
Den kompletten Artikel lesen »
5. Februar 2009 um 11:11 · Gehört zu Design Pattern, OOP, Performance, Server
So schnell können Wünsche in Erfüllung gehen Julius ;) Das mit dem Artikelwunsch ist eine prima Sache für Autoren. Ich gebe zu, in letzter Zeit bin ich wenig fantasievoll, was Artikelthemen angeht. Dann schreibt man halt über ein Thema, das einen selbst gerade beschäftigt und natürlich nutze ich meinen Blog auch dazu, Lösungswege für mich (und die Öffentlichkeit) festzuhalten.
Performance als Thema ist immer so eine Geschichte. Bei den meisten kleinen Projekten eher präventiv zu sehen, ist es bei Business-Projekten mit hohen Zugriffszahlen und/oder gigantischen Datenbankgrößen ein nicht unwesentlicher Aspekt bei der Webentwicklung.
Aber aus Spiel und Spass kann schnell ein großes Projekt werden, weil es das mehr oder minder breite Publikum begeistert und die Zugriffszahlen in die Höhe schießen lassen und die Entwicklung mit dem Tuning nicht mehr nachkommt. In diesem Fall (und allen anderen) rechnet sich dann eben eine sorgfältige leicht paranoide Planung der Entwicklung nach dem Motto, was wäre wenn…
Den kompletten Artikel lesen »
17. Oktober 2008 um 13:33 · Gehört zu Design Pattern, OOP, PHP (Allgemein)
Vor ziemlich genau 100 Jahren hat der PHP Blogger mit einer Serie begonnen, die leider nie zum Ende gekommen ist: Es geht im Hook- und Callback Implementierungen. Teil 1 hat die eine Vererbungstechnik vorgestellt, in Teil 2 haben wir uns einen Callback-Stack angeschaut und weil mich ständig Fragen via Mail zu dem Thema erreichen, habe ich mich entschieden, den 3. Teil doch noch fertig zu stellen ;)
Im Teil 3 werfen wir also einen Blick auf die Listener-Objekte, wie sie in Actionscript zum Einsatz kommen. Die Actionscript-Götter haben mit den Listenern im Prinzip Callback-Pakete geschnürt: Alle zusammengehörigen Callback-Funktionen sind in einem Objekt untergebracht.
Den kompletten Artikel lesen »
25. Mai 2007 um 14:18 · Gehört zu OOP, PHP (Allgemein)
Mich lässt der Artikel von Stefan nicht in Ruhe. Ihm ging es eigentlich um den Einsatz der Mehrfachvererbung und wie sinnvoll sie ist. Die Beispiele, die er von Corsin übernommen hat, sind recht wackelig und mein Vorschlag war, sie besser mit dem Dekoratormuster zu “erschlagen” als durch die Gegend zu vererben.
Ich möchte keinen langweilen, jeder hat sich damit bestimmt schon ausreichend beschäftigt, aber beide Methoden haben Ihre Vorteile und ich möchte jede Technik kurz anreissen, denn ich denke es ist sinnvoll, wenn man sich beider Techniken bewusst ist.
Den kompletten Artikel lesen »
24. Mai 2007 um 18:36 · Gehört zu OOP, PHP 4
Ein sehr beliebter (und oft über Google gefundener) Artikel bisher ist “Das Singleton Design Pattern mit PHP 4“. Das Grundprinzip des Artikels ist mit einem Satz erklärt: Eine beliebige Klasse bekommt die Funktion “getInstance” implementiert, die eine Referenz auf ein Objekt dieser Klasse zurückliefert.
Auf diese Art und Weise wird der Speicher geschont, weil zur Laufzeit immer nur eine einzige Objektinstanz verwendet wird. So kann man z.B. quer durch eine Applikation super einfach auf ein- und dieselbe Datenbankverbindung zugreifen.
Den kompletten Artikel lesen »
6. Mai 2007 um 20:36 · Gehört zu Allgemein, Best-Of, OOP
Nach dem andere Blogs den Ball zum Thema “Regeln brechen” aufgenommen haben, hab ich mir ebenfalls nochmal Gedanken dazu gemacht.
René z.B. ist der Ansicht, das Programmierung im OOP Sinne wesentlich sauberer ist als prozedurale Programmierung. “Alles Geschmackssache” sagte der Affe und biss in die Seife ;) Ich denke, das Performance kein Freibrief für schlampige Programmierung sein sollte. Die kommt leider zu oft vor - ich kenne es von mir. Es gibt nur wenige Arbeitgeber, die genügend Entwicklungszeit einräumen und kein Verständnis entgegenbringen, wenn es um angemessene Projektzeiten geht.
Ich bin generell der Ansicht, dass man prozedurale Programmierung nicht mit Objektorientierter Entwicklung vergleichen kann. Das sind einfach zwei unterschiedliche Disziplinen. Die eine etwas einfacher und älter als die andere, aber beide haben Vorteile.
Wird ein Projekt nicht erst dann unübersichtlich und wirkt schlecht programmiert, wenn beide Arten zu programmieren mit einander vermischt werden?
Den kompletten Artikel lesen »
2. Mai 2007 um 15:54 · Gehört zu Allgemein, OOP
Du stehst auf Objektorientierung? Du versuchst alles und jeden in ein Objekt zu verpacken und wild hin und her zu vererben? Dann gibst Du genau der oder die Richtige, wenn es darum geht, genau das nicht zu machen :)
Ich will, das Du mit mir die Regeln brichst. In den Sonnenuntergang reitest und auf alle Objekte und Klassen der Welt pfeifst… Es geht nämlich um Hilfsfunktionen und wie man sie am besten in Dateien und verpackt und included.
Überlegen wir erst mal, wie man Hilfsfunktionen ablegen könnte:
- Globale Funktionen
- Klassenmember Funktionen
- Statische Klassenmember Funktionen
Den kompletten Artikel lesen »
9. April 2007 um 18:17 · Gehört zu Best-Of, Design Pattern, OOP, PHP 4
Ein vielversprechendes Standardmuster ist das Singleton Design Pattern. Es sorgt dafür, das in einer Applikation oder einem Framework immer nur ein und dieselbe Objektinstanz verwendet wird - das aber, so oft man möchte. Eine klassische Verwendung wäre etwa eine Datenbankverbindung. Es wird immer nur eine gleichzeitig benötigt, aber an mehreren Stellen.
Ein Vorteil, der sich auf den 1. Blick ergibt, ist die Performance: Das Objekt muss nur einmal initialisiert werden - eventuelle Datenbankverbindungen werden nur einmal zu Beginn aufgebaut. Auch eine unter Umständen aufwändige Parametrisierung muss nur einmal durchgeführt werden. Und zu guterletzt wird der RAM nicht mit redundaten Infos zugemüllt - was will man mehr als eine schlanke, effiziente Anwendung!?
Um ein stinknormales Objekt zu einem Singleton-Objekt zu machen, ist nur eine einzige Funktion notwendig: “GetInstance”. Wie sie heisst, ist eigentlich egal - als Quasistandard hat sich aber “GetInstance” durchgesetzt. Beim 1. Aufruf erzeugt diese statische Funktion ein neues Objekt und liefert eine Referenz auf dieses zurück.
Den kompletten Artikel lesen »
7. April 2007 um 13:55 · Gehört zu OOP, PHP 4, Quick Hacks
Abwärtskompatible Bibliotheken und Applikationen sind in PHP in Zeiten des Umbruchs immer schwieriger herzustellen. Mit jeder PHP Version ändern sich Funktionen, Objektorientierung und vieles andere. Der stärkste Schnitt zwischen PHP 4 und 5 war und ist immer noch die “neue” Konstruktor-Notation:
function __construct()
{
}
Irgendwie hab ich immer noch nicht so ganz genau gepeilt, was den Ausschlag zu der von den PHP Entwicklern gewählten Notation geführt hat. Ich finde es auf jeden Fall furchtbar.
Den kompletten Artikel lesen »
7. April 2007 um 13:28 · Gehört zu Design Pattern, OOP, PHP (Allgemein)
Okay, jetzt wird ein bisschen an der Oberfläche gekratzt. Ich möchte einen Quasi-Standard vorstellen, der viele Möglichkeiten eröffnet und trotzdem oft links liegen gelassen wird: Das Objekt-Objekt, oder die Mutter aller Objekte :)
Wer schon mal Windowsprogrammierung mit der MFC oder STL betrieben hat, kennt das Objekt-Objekt. Genauso gut sind diejenigen dran, die schon mit guten PHP Frameworks gearbeiten haben: Alle Klassen sind von einer Stammklasse abgeleitet, die absolut wertfrei ist.
Vielleicht sieht das der eine oder andere als Designfehler an, denn Klassen sollten ihre Eigenschaften und Methoden eigentlich nur an gleichartige oder artverwandte Klassen weitergeben. Wieso dann eine Mutterklasse für alles?
Den kompletten Artikel lesen »
Ältere Artikel »