3 Stimmen

Einzeilige if-Anweisungen

Ich war kürzlich in einen Streit mit einem Kollegen verwickelt, bei dem es um einzeilige if-Anweisungen ging, und wollte sehen, was Stackoverflow darüber denkt.

Meinen Sie, dass die Erklärung wie folgt lauten sollte?

if(condition)
{
     statement = new assignment;
}

OU

if(condition)
    statement=new assignment;

begründen Sie bitte Ihre Entscheidung.

19voto

Cem Kalyoncu Punkte 13357

Ob Sie wirklich eine Zeile verwenden sollten, wenn

 if(condition) statement=new assignment;

ist besser, da es sich um eine einzige Zeile handelt, die nur einen Vorgang enthalten sollte.

15voto

Eric J. Punkte 143512

Ich verwende immer geschweifte Klammern, um das Risiko zu verringern, dass jemand (mich eingeschlossen) später einen Fehler einführt, indem er den Code um die if-Anweisung herum bearbeitet, ohne genau darauf zu achten, welche Zeile(n) zur if-Bedingung gehören.

EDIT:

Hier ist ein Live-Beispiel, wenn dies ich gerade zufällig über in einigen alten Code zu kommen:

if (form.validateUpload (messages, this))
    return getErrorOutcome (ctx, messages);
    if (LOG.isInfoEnabled ())
        LOG.info ("CREATING UPLOAD");

Beachten Sie, dass beide "if"-Anweisungen im Hauptcodeblock stehen, aber aufgrund der schlechten Formatierung auf den ersten Blick verschachtelt erscheinen. Sicherlich sollte jeder "gute" Programmierer schnell erkennen, was hier passiert, aber warum unnötige Verwirrung stiften?

5voto

Alan Punkte 44139

Ich war schon immer ein Fan von Zahnspangen. Wenn jemand eine einzeilige if-Anweisung so ändern würde:

if(condition) statement=new assignment;

zu

if(condition)
statement = new assignment;
another statement;

Sie werden nicht das erwartete Verhalten zeigen.

Die Verwendung von geschweiften Klammern stellt sicher, dass jemand, der eine if-Anweisung ändert, die richtigen Anweisungen an der richtigen Stelle einfügt.

4voto

RMorrisey Punkte 7499

Das hängt wirklich von der Art der Codierung in Ihrer Gruppe ab. Die Gruppe sollte einheitliche Kodierungsstandards haben. In meiner derzeitigen Gruppe verwenden wir immer:

if (condition) {
  statement = new assignment;
}

Wir tun dies, um Fehler zu vermeiden, die durch das Vergessen der geschweiften Klammern nach der if-Anweisung entstehen, wie z. B.:

if (condition)
   statement1;
   statement2; 
//statement2 is not part of the if statement, but it looks like it because of wrong indentation

Eine andere Gruppe, mit der ich bis vor kurzem zusammengearbeitet habe, verwendete immer diese Syntax für einzeilige if-Anweisungen:

if (condition)
    statement1;

Ich persönlich mag das nicht so sehr, weil es weniger eindeutig ist; aber das Wichtigste ist, dass Sie sich an einen einheitlichen Kodierungsstandard für Ihre Gruppe oder Ihr Projekt halten, damit der von Ihnen geschriebene Code genauso aussieht wie der von Ihren Kollegen und für alle in der Gruppe genauso leicht zu lesen ist.

Die Konventionen Ihrer IDE oder Umgebung können eine gute Grundlage für Ihre Codierungsstandards bilden und sogar auf den Stil Ihrer Gruppe zugeschnitten sein.

1voto

Adam Robinson Punkte 176996

Ich mache immer Einzeiler if Aussagen sans-brackets. Das Vorhandensein von Klammern zeigt (syntaktisch korrekt) an, dass "oh, ich kann hier noch etwas anderes machen..." und ich mag die Versuchung nicht. Alles, was mehr als eine Anweisung beinhaltet, sollte in mehrere Zeilen mit entsprechenden Klammern aufgeteilt werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X