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