3 registered members (Ayumi, Akow, AndrewAMD),
1,505
guests, and 9
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Der "mich kotzt etwas verdammt an"- Thread
[Re: Error014]
#404540
07/10/12 20:57
07/10/12 20:57
|
Joined: Jan 2002
Posts: 4,225 Germany / Essen
Uhrwerk
Expert
|
Expert
Joined: Jan 2002
Posts: 4,225
Germany / Essen
|
Also ich finds ganz witzig mal über solche Dinge zu lamentieren. Harry, in jedem Deiner Beispiele muss man eine geöffnete geschweifte Klammer hinzuphantasieren. Sonst fällt man nicht drauf rein. Wenn man zueinander gehörende Klammern immer untereinander schreibt ist das nahezu nicht möglich. Meiner Ansicht nach hast Du mit "zusammengehörige Klammern immer untereinander schreiben" und "korrekt einrücken" zwei Sicherheitsnetze, so dass ein Irrtum eigentlich nur im Vollsuff möglich ist.
Always learn from history, to be sure you make the same mistakes again...
|
|
|
Re: Der "mich kotzt etwas verdammt an"- Thread
[Re: Uhrwerk]
#404542
07/10/12 21:56
07/10/12 21:56
|
Joined: Sep 2003
Posts: 9,859
FBL
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 9,859
|
*schulterzuck* Ist mir noch nie passiert. Ist mir auch schleierhaft wie das bei korrekter Einrückung passieren soll... Das Problem daran ist: C/C++ achtet nicht auf Einrückung. Somit kann eine fehlerhafte Einrückung eine Zusammengehörigkeit suggerieren die nicht da ist.
if (a==b)
a = 23;
b = 25;
c = 42;
Klassischer Einrückfehler, den man sehr leicht übersieht. Nun kann man rätseln, ob nur falsch eignerückt wurde, oder ob tatsächlich beide Variablen bedingt durchs if gesetzt werden sollen, und nur jemand beim Rumhudeln die Klammern nicht eingefügt hat.
if (a==b)
{
a = 23;
b = 25;
}
c = 42;
hingegen funktioniert, ganz egal WIE gammlig es formatiert ist. Einrückfehler passieren sehr schnell, wenn verschiedene Leute an den selben Files basteln. Wenn jemand seine Tabulator Settings anders/falsch hat, dann ist einmal mit Spaces, einmal mit Tabs eingerückt... beim Einen siehts dann trotzdem noch richtig aus, der Nächste kriegt plötzlich Einrückmurks. Das ist sicher nicht gewünscht, aber es passiert nunmal. Immer und andauernd wieder. In C/C++ auf Einrückung zu vertrauen ist ein ganz großer Fehler. Das macht man einfach nicht, da es keinerlei Absicherung gibt!
Last edited by Firoball; 07/10/12 22:03.
|
|
|
Re: Der "mich kotzt etwas verdammt an"- Thread
[Re: FBL]
#404545
07/10/12 22:42
07/10/12 22:42
|
Joined: Feb 2005
Posts: 3,687 Hessen, Germany
Tempelbauer
Expert
|
Expert
Joined: Feb 2005
Posts: 3,687
Hessen, Germany
|
Also mir entgehen diese Einrückfehler niemals.
if (a==b)
a = 23;
b = 25;
c = 42;
wenn ich sowas lese sehe ich sofort, dass b nicht in die if gehört. für sowas hab ichn blick. anders siehts aus wenn jemand einen kompakten codehaufen bildet:
if(a==4) {
if(IsChecked()) {
for(int i=0; i<10; i++) {
a++;
a--;
}
}
}
sobald die geschweiften keine extra-zeile für sich haben, wirft mein hirn eine BadFormatException und muss den OCR-Prozess neustarten. Was auch schlimm ist, wenn es Typen gibt die ihre Variablen völlig bescheuert benennen. hab schon mehrfach code gesehn, da wurden variablennamen gewählt die wenig bis nichts mit dessen context zu tun haben (da würde eine konstante angelegt, die "negativfaktor" heißt und mit dem fahrzeug-speed verrechnet wird. warum nennt er sie nicht "speedAdjustFactor" oder so?) oder völlig generische namen (a,b,c,... das ganze alphabet durch). natürlich ohne kommentare. wozu auch? die programmlogik geht ja aus dem quelltext hervor
|
|
|
Re: Der "mich kotzt etwas verdammt an"- Thread
[Re: Uhrwerk]
#404546
07/10/12 22:50
07/10/12 22:50
|
Joined: Dec 2002
Posts: 3,363 Vindobona (Ostarichi)
Harry Potter
Expert
|
Expert
Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
|
Harry, in jedem Deiner Beispiele muss man eine geöffnete geschweifte Klammer hinzuphantasieren. Möglicherweise sehe ich Klammern mit anderen Augen, als jemand, der immer nur C/C++ programmiert hat. Weil ich habe in meinem Leben schon mit vielen verschiedenen Programmiersprachen gearbeitet, bei denen es solche Klammern gar nicht gibt. Deshalb hat für mein Unterbewusstsein so eine Klammer keine so große Bedeutung, und wird daher möglicherweise auch mal übersehen. Ich bin Programmiersprachen gewohnt, bei denen man z.B. schreibt "IF a = b." oder "a IFEQ b" oder "IF a = b THEN", usw.! Und daher fällt es mir auch nicht sofort auf, wenn bei einer Zeile "IF a = b" die Klammer fehlt. Weil für mich sieht diese Zeile nach dem vollständigen Beginn eines typischen IF-Blocks aus. Jemand, der nur C/C++ gewohnt ist, sieht das möglicherweise anders?! Ich glaube, Firo und ich sehen das auch viel mehr aus beruflicher Sicht. Wenn jemand als Hobby zu Hause sein eigenes Programm schreibt, dann kennt er sein Coding. Man kennt den eigenen Programmierstil, und daher ist es eher nebensächlich, wie man programmiert (ob man nun Klammern macht, oder nicht, ob man korrekt einrückt, oder nicht). Wenn man aber beruflich an einem Programm arbeitet, dann arbeiten oft sehr viele verschiedene Entwickler an diesem Programm. Personen, die sich oft nicht einmal persönlich kennen. Wenn dann jeder einen eigenen Programmierstil hat, würde das Chaos ausbrechen. Daher ist es besonders wichtig, dass man so übersichtlich wie möglich programmiert. Da ist es fast eine Todsünde, wenn man nur aus Faulheit zwei Klammern weglässt, was in Folge dann für einen anderen Entwickler zu einer Falle werden könnte, wenn er das Coding erweitert.
|
|
|
Re: Der "mich kotzt etwas verdammt an"- Thread
[Re: Tempelbauer]
#404547
07/10/12 23:05
07/10/12 23:05
|
Joined: Dec 2002
Posts: 3,363 Vindobona (Ostarichi)
Harry Potter
Expert
|
Expert
Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
|
anders siehts aus wenn jemand einen kompakten codehaufen bildet: Ich persönlich finde diese "kompakten Codehaufen" meist sogar übersichtlicher als die Klammern in einer eigenen Zeile. Hängt halt auch immer von der Komplexität des Codings ab. Aber grundsätzlich ist mir lieber, wenn ich so viel Coding wie möglich auf einer Bildschirmseite sehen kann. Klammern in eigenen Zeilen blähen das Coding so sehr auf, dass man bei langen Programmen viele unnötige Seiten durchblättern muss, um das Coding zu lesen. Und der zweite Grund ist der, dass die Schreibweise ...
if(a==4) {
tuDas(1);
tuDas(2);
}
am ehesten den anderen bekannten und gewohnten Programmiersprachen entspricht. Zum Beispiel BASIC:
if a=4 then
tuDas(1)
tuDas(2)
endif
Oder ABAP:
if a=4.
tuDas(1).
tuDas(2).
endif.
|
|
|
Re: Der "mich kotzt etwas verdammt an"- Thread
[Re: Harry Potter]
#404551
07/11/12 06:51
07/11/12 06:51
|
Joined: Dec 2003
Posts: 1,225 germany
gri
Serious User
|
Serious User
Joined: Dec 2003
Posts: 1,225
germany
|
Ich setze Codeblock-Klammern in eigene Zeilen. Übersicht ist wichtig und wenn man testweise kritische Blöcke auskommentieren will gehts auch fix. Mit Grausen erinnere ich mich an die Anfangszeit als ich gleich die coole Programmierersau sein wollte und Listings aus dem 64'er Magazin abtippte. Pah! Scheiß aufs Aussehen Hauptsache es läuft, .....dann ein "RUN"....und mein Brotkasten antwortete mit "SYNTAX ERROR". Haareraufend (hatte ich damals noch) suchte ich dann den/ die Fehler in dem Scheiß. Vor 10 Jahren folgte dann beruflich bedingt der erste Kontakt mit Python. Exakte Einrückungen ? Na hallo! ..... wenn nicht dann ists Essig! Um mehr Code zu sehen hat man auch mal die Pivotfunktion und ein gedrehtes Display genommen. Hier mit der Acknex nutze ich nun die HorusIDE von Tempelbauer (danke ). Die geteilte Editoransicht hilft die Übersicht zu behalten.
"Make a great game or kill it early" (Bruce Shelley, Ensemble Studios)
|
|
|
Re: Der "mich kotzt etwas verdammt an"- Thread
[Re: Harry Potter]
#404554
07/11/12 08:40
07/11/12 08:40
|
Joined: Nov 2011
Posts: 274 de
lemming
Member
|
Member
Joined: Nov 2011
Posts: 274
de
|
Wir machen uns noch alle hier zum @. Ich habs verstanden. ^^ Das @ heißt auch Klammeraffe. Aber ich hab auch in Klammernloser Sprache (BASIC) angefangen zu programmieren und war hin und wieder ohne Klammer unterwegs. Und ehrlich gesagt, hab ich sie jedesmal vermisst. Ich finde Klammern einfach viel praktischer als FI, WEND, END und wie sie alle heißen.
|
|
|
|