dedlfix: Vereinfachung von PHP-Code

Beitrag lesen

Hi!

$count = count ($position->position);
if ($count>0) {
$p++;
}

Als Einzeiler könnte man

$p += (bool)count($position->position);

schreiben, aber der bool-Trick macht die Sache recht undurchsichtig. Ich wollte ja sign() nehmen, aber das kennt PHP nicht. Da die Anzahl nicht weiter benötigt wird, ist es wenig sinnvoll, sie zwischenzuspeichern. Es reicht

if (count($position->position));
    $p++;

Und noch besser wäre hasChildNodes(), denn es interessiert ja nicht die Anzahl, sondern nur, _ob_ welche vorhanden sind. Das ist auch (in dem Fall sicher vernachlässigbar minimal) performanter, weil nicht alle Kinder durchlaufen werden müssen, sondern nach dem ersten schon das gewünschte Ergebnis feststeht.

  $a= dive($posi, $p);  
  if ($a>$p) {  
  	$p=$a;  

An welche anderen Situationen hast du denn hier gedacht? $p = dive($posi, $p); wäre doch völlig ausreichend und richtig.

Isnicht ganz sauber und wie gesagt ungetestet, aber evtl hilft dir das ja weiter :)

Das ist immer so eine Sache mit schnell mal hingeschriebenem Code. Vor allem, wenn er ungetestet ist. Getestet kann er natürlich auch noch Fehler enthalten, aber wenigstens die gröbsten funktionellen Schnitzer sollten dabei erkannt werden. Jedenfalls ist bei Code nicht unbedingt erkennbar, ob eine bestimmte Absicht hinter einem Konstrukt steckt und sich nur ein Fehler eingeschlichen hat, oder ob die Herangehensweise nicht zielführend ist. Besser ist es, zunächst einmal ein klaren Worten zu beschreiben, wie der Ablauf sein soll. Selbst Pseudo-Code halte ich für das Verständnis besser als kommentarlosen Code.

Lo!