Was sind überflüssige Klammern und wie erkenne ich die beim Java Programmieren?
Also ich weiß nicht wann die klammern überflüssig sind und wann nicht kann mir das jemand erklären
gibts da bestimmte regeln ?
6 Antworten
Überflüssige Klammern gibt es eigentlich kaum bei Java. Zumindest nicht, wenn man nicht mit der Intention an einen Code herangeht, überflüssige Klammern zu erstellen.
In der Hinsicht ist Java eigentlich recht streng. Das einzige, wo du praktisch unendlich viele Klammern machen kannst, sind Rechenoperationen. Da ist das genau wie in der Mathematik. Auch geschweifte Klammern {} kannst du so viele setzen, wie du willst. Das macht aber absolut keinen Sinn.
Bei vielen Dingen, die normalerweise Klammern {} benötigen, kann man diese weglassen, wenn sie nur einen Befehl enthalten. Man sollte sich das Ganze jedoch gut überlegen, gerade bei komplexerem Code kann das schnell zu Fehlern führen.
if (true)
// Anweisung
while (true)
// Anweisung
if (false) {
} else
// Anweisung
Diese {} sind eigentlich nie wirklich "überflüssig"
Diese () nur bei Rechnungen wenn sie als Klammern überflüssig sind. Aber es gibt Regeln wann man die Klammern setzt, so sind sie eigentlich nie überflüssig.
Wenn man sowas macht, sollte man es mit dem Programmieren aber sofort sein lassen
Das ist halt ein ganz offensichtliches Beispiel um deine Aussage "nie überflüssig" zu widerlegen.
Man kann die Klammern aber auch so gut "verstecken", dass es eben nicht mehr so offensichtlich ist. Allerdings bedeutet das auch, dass der Code dann so oder so zu "unübersichtlich" ist.
Gruß
Schon klar aber ich habe überflüssig extra in Klammern gesetzt da sowas natürlich immer möglich ist
Eine Klammer auf { erstellt einen Gültigkeitsbereich. Eine Klammer zu } schließt diesen wieder.
Der Begriff den du suchst ist also: GÜLTIGKEITSBEREICH
google das mal
if(irgendwas) {
// gültigkeitsbereich der if verzweigung
}
Es gibt eigentlich zwei Arten von überflüssig.
- Überflüssig, aber irrelevant
- Überflüssig, aber relevant
Beim Irrelevanten, ist es nun mal egal, ob zu viele da sind. Beim Relevanten Typ wird dein Programm nicht starten, bzw der Code nicht funktionieren.
Das ist zwar ziemlich oberflächlich ausgedrückt, aber werde ich dir jetzt nicht erklären, wo Klammern hin müssen, wo sie da stehen können und wo sie nicht stehen dürfen
Ja es gibt bestimmte Regeln, aber meistens sagen die genau das Gegenteil, mache immer Klammern (sofern du von geschwungenen Klammern redest).
Aus dem einfach if:
if(condition)
then
sollte danach
if(condition)
{
then
}
werden.
Überflüssige Klammern sind dann nur noch solche welche irgendwo mitten im Programm stehen ohne zugehörige Anweisung. Also zB:
a = b;
{
b = c;
}
Oh gott, wie ich diese Schreibweise überhaupt nicht mag
if(condition)
{
then
}
Mögen oder nicht mögen ist persönliche Geschmackssache. In den so gut wie allen Guidlines für sicherheitskritische Anwendungen steht es allerdings so drinnen.(Automotive, Space, Military)
Der Grund dafür ist relativ einfach. Wenn ein anderer Programmierer direkt unter die then Anweisung Code einfügt wird dieser nicht mehr vom if-Block erfasst.
Das klingt jetzt womöglich trivial, ich kenne allerdings Fälle wo genau so ein Fehler zu einem Totalschaden an einer Drone geführt hat.
Ist im Prinzip genau so wie die Verwendung von int Variablen in C Code. Das findet sich zwar nicht in allen Guidlines, hab es aber auch schon mal gesehen.
Ich habe zwar keine Ahnung was du mit
east-coast west-coast
meinst, aber ich meine, dass die geschweifte Klammer in der nächsten Zeile alleine steht.
Mag sein, dass die ein oder anderen damit besser zurecht kommen, aber ich finde das schrecklich. Wenn jemand an meinem Code arbeitet und der andere diese Schreibweise
{
then
}
hat, der muss ich auf meinen Code anpassen, kann er es nicht, muss er sich was anderes suchen ^^
Achso darum gings, ich habe mich da eher darauf bezogen, dass man bei jeder if Anweisung Klammern setzen soll. Wo diese Klammern stehen ist auch nach den Coding Standards egal, sie müssen nur da sein.
In den meisten Unternehmen gibt es hald neben den Coding Standards auch noch Formattierungsguidlines und daran sollte man sich dann eben halten. Egal ob es einem gefällt oder nicht.
Bei uns wird die Formattierung zB automatisch vom Buildserver gemacht und egal wie du die Klammern setzt im git wird dann eben immer:
if(condition)
{
then
}
stehen. Was ja bei Projekten mit mehreren Personen durchaus Sinnvoll ist wenn alle nur eine Formattierung verwenden. Macht den Code leichter lesbar und auch wartbar.
Absolut ... Und da ich mein eigener Chef bin und die Leute an meinem Code mit arbeiten, teilweise, gebe ich halt vor, wie es zu machen ist :D
Nun, jedes Kind hat einen Namen:
https://de.wikipedia.org/wiki/Einr%C3%BCckungsstil#Allman_/_BSD_/_„East_Coast“
Gruß
Ja dann ist es natürlich deine Entscheidung ;)
Bei uns hat sich das ganze aus einer Sitzung mit den Mitarbeitern entwickelt und der Allman hatte mehr stimmen, daher verwenden wir ihn einheitlich.
Mittlerweile verwende ich ihn privat auch, weil ich anderen Code bei vielen Verschachtelungen mit dem K&R kaum mehr lesen kann.
Natürlich, geschweifte Klammern sind nie überflüssig....
Funktioniert wunderbar und doch gibt es hier einige überflüssige geschweifte Klammern.
Gruß