;) Okay, kleines Wortspiel. Nils verzeiht mir hoffentlich, dass ich seinen Blog-Namen missbrauche. Aber eigentlich bin ich ganz im Sinn der Sache unterwegs. Gerade wurde mir ein Bug reported, von dem ich dachte “Sowas gibts doch gar nicht!”. Oh doch, gibt es.
Es handelt sich um die PHP-Funktion “ucwords“: Die soll (eigentlich) in einzelnen Worten in einem String den Anfangsbuchstaben in Grossbuchstaben und alle restlichen Buchstaben in Kleinbuchstaben umwandeln. Funktioniert prima, so lange es sich um einen String in Kleinbuchstaben handelt. Wer einen String mit Grossbuchstaben übergibt, wird enttäuscht: Nix passiert.
Das gleiche übrigens bei “ucfirst“. Dieses Verhalten ist zwar in einem Beispiel dokumentiert, aber nicht begründet. Wer macht so eine Scheisse bitte? Selbst wenn es einen Grund gibt, solche impliziten Verhaltensweisen zu implementieren, sollten Sie aus dem Namen der Funktion hervorgehen oder mit einem Flag deaktivierbar sein.
Also nur so als Tipp: Wenn eine Funktion etwas macht, was nicht direkt aus ihrem Namen hervorgeht, sollte
- entweder die Funktion umbenannt werden,
- um ein Flag zum Deaktivieren erweitert werden,
- oder am Besten: so umgebaut werden, das sie das tut, was man von ihr erwartet…
Achso: Mit Unit-Tests wäre das nicht passiert ;)
Ähnliche Artikel:





