Mailinglisten-Archive |
Hallo Michael, Am Mittwoch, 22. November 2006 09:00 schrieb Michael Borchers: > Welchen Ablauf (z.B. innerhalb eines Skriptes oder auch einer Klasse) > haltet ihr für sinnvoller?! > > > 1. > if(!empty($var)) > { > go($var); > } > > function go($var) > { > echo $var; > } > > > 2. > go($var); > > function go($var) > { > if(!empty($var)) > { > echo $var; > } > } > > > Ich bevorzuge z Zt Variante Nr. 2, z.B. in meiner Klasse. > Also einfach die Funktionen aufrufen und diese auch validieren > lassen, ob überhaupt etwas ausgeführt werden soll. > > Oder ist das performance-technisch schon dramatisch?! probier es hinsichtlich der Performanz doch mal aus. :-) Im Prinzip hängt die Antwort auf Deine Frage aber vom Zusammenhang ab, würde ich sagen. Beide Lösungen haben ihre Vor- und Nachteile. Lösung 1. hat den Vorteil, daß Du die Funktion gar nicht erst aufrufst, wenn es nicht nötig ist. Je nachdem, wie oft und wo Du die Funktion in Deinen Skripten aufrufen möchtest, hast Du aber den Nachteil, daß Du die if-Bedindung jedes Mal wiederholen mußt. Damit schaffst Du redundanten Code, der vielleicht geringfügig schneller, aber - zuweilen sogar deutlich - schlechter zu warten sein wird. Bei Lösung 2. ist es umgekehrt. Wenn die if-Bedingung nicht erfüllt ist, dann führst Du unnötigerweise zuvor auch den Funktionsaufruf durch. Dafür ist die if-Bedingung nur einmal hinterlegt. Es gibt jedoch einen Punkt, wo die Lösung 1. einen zusätzlichen Vorteil hat: Du fragst ja auf !empty() ab, was auch bedeuten kann, daß $var an der Stelle überhaupt nicht existiert. In diesem Falle tritt bei der Lösung 2. einen Fehler auf. In diesem Fall wäre Lösung 1. die richtige Wahl, wobei ich allerdings der Meinung bin, daß solch ein Fehler, daß im Skript eine Variable verwendet werden soll, die u.U. nicht existiert, nicht auftreten dürfte. Wenn man das noch weiterdenkt, muß eigentlich jede Variable zu jedem Zeitpunkt an jedem Ort in Deinen Skripten vernünftig deklariert und initalisiert sein. Setzt man das voraus und programmiert objektorientiert, dann kannst Du Dir die if-Abfrage komplett sparen und die Funktion bzw. Methode einfach eine Exception werfen lassen, sollte die Variable einmal unerwarteterweise nicht korrekt deklariert oder initalisiert sein. Die geworfene Ausnahme kannst Du dann irgendwo auffangen und verarbeiten. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive