# Klammersetzung bei if-else Anweisungen und Schleifen



## joe80 (8. Jul 2005)

Hallo zusammen,

habe erst angefangen Java zu programmieren und hätte da ne Frage zur Klammersetung bei if-else Anweisungen und bei Schleifen.
Wann kann ich die Klammer bei z. B.

if (Ausdruck) {
   }

weglassen bzw. wann muß ich sie dazu schreiben?
Was genau macht den Unterschied aus?
Dasselbe gilt für Schleifen.

Wäre nett wenn mir jemand helfen könnte.

Bis denn

Joe


----------



## Roar (8. Jul 2005)

du kannst du klammern immer weglassen, aber wenn keine klammern da sind, wird nur die nächste folgende anweisung in den block gepackt. sprich:

```
if(abc)
   def();
ghi();
```
entspricht

```
if(abc) {
   def();
}
ghi();
```


----------



## Illuvatar (8. Jul 2005)

Es is vom Stil her besser, sie immer zu schreiben.


----------



## byte (8. Jul 2005)

find ich nich


----------



## Illuvatar (8. Jul 2005)

1. besser lesbar
2. weniger fehlerträchtig
3. von den Coding Conventions vorgeschrieben


----------



## byte (8. Jul 2005)

eher "vorgeschlagen" statt "vorgeschrieben" - der rest ist ansichtssache


----------



## bambi (9. Jul 2005)

Wenn's in den Coding Conventionen steht ist's immer besser es auch so zu machen - denk' ich  :wink: 
Ausserdem find' ich's auch viel einfacher zu lesen mit den Klammern.


----------



## Bleiglanz (11. Jul 2005)

UND

wenn man später was hinzufügen muss, dann sind die Klammern schon da 

ohne die Klammern hat man IMHO das Problem der konsistenten Verwendung (auch wenn man natürlich mischen kann): die Regel müsste ja lauten: "Wenn nur eine Anweisung, dann keine Klammern setzten"

und das macht MEHR Arbeit beim editieren


----------



## thE_29 (11. Jul 2005)

Problem stellt sich hier bei!


```
if(true)
           if(nochmals true)
              ;
           else
             ;
```

Zu wem gehört jetzt dieses else


----------



## T1M (11. Jul 2005)

*klugscheiß*
zu dem letzen offenen if, wenn mich nicht alles täuscht.


----------



## roughelement (13. Jul 2005)

Ausserdem kann es beim debugging zu Problemen führen wenn man die Klammern weg lässt denn dann mach man oft folgendes:



```
a++;
if (b) 
  c++;
d++;
```

Debug mit Klammer

```
a++;
System.out.println(a);
if (b) {
  c++;
  System.out.println(c);
}
d++;
System.out.println();
```

Debug ohne Klammer

```
a++;
System.out.println(a);
if (b) 
  System.out.println(c);
  c++;
System.out.println(d);
d++;
```

Sowas passiert schneller als man denkt wenn man die klammern weglässt.


----------



## thE_29 (13. Jul 2005)

Für sowas hat man einen debugger und keine System.out.println...  (btw der jdb ist auch net so schlecht, wenn man mal weiß wie man den bedienen muss!!)


----------



## roughelement (13. Jul 2005)

Das ist klar  Ohne den Eclipse Debugger kann ich auch nicht mehr leben aber dennoch kein ein Debugger nicht immer immer ein syso ersetzen.


----------



## mic_checker (13. Jul 2005)

Die System.out.println ersetzen bei mir den debugger


----------

