Slyh: Fehler im Lernbuch ?!

Beitrag lesen

Hallo Stefan,

In deinem Fall sind die Klammern gar nicht noetig, weil nur jeweils eine Anweisung vom if und vom else abhaengt. Also einfach:

if(fclose ($oeffnen))
$allesklar = TRUE;
else
$allesklar = FALSE;
return $allesklar;

Du hast natürlich recht damit, daß man hier prinzipiell die geschweiften
Klammern weglassen könnte. Allerdings halte ich diesen "Tipp" für mehr
als zweifelhaft. Die Lesbarkeit vermindert sich enorm, wohingegen die
Chance (später) einen schwer auffindbaren Fehler zu machen ganz
erheblich steigt. Um zu erkennen, daß nachfolgendes Konstrukt nicht
das macht, was es eigentlich soll, muß man schon genau hinschauen:

if(fclose ($oeffnen))
      $allesklar = TRUE;
  else
      $allesklar = FALSE;
      $variable  = 42;
  return allesklar;

Der Fehler kommt meist dadurch zustande, daß vergessen wird die
geschweiften Klammern nachträglich einzufügen, wenn mehr als eine
Zeile nach dem else steht. Sind dort bereits geschweifte Klammern
notiert, kann das natürlich nicht passieren.

Die optimale Lösung wäre damit -- und so ist das auch in einigen
Coding Style Guides nachzulesen -- die folgende:

if (fclose($oeffnen)) {
      $allesklar = TRUE;
  } else {
      $allesklar = FALSE;
  }

return allesklar;

Oder noch besser:

return fclose($oeffnen);

;-)

Gruß
Slyh