Eure Programmierkonventionen ?
-
Original erstellt von Gregor:
Welche Gründe sprechen für Tabs?Schau dir mal Python an. Da werden Anweisungsblöcke an Tabs erkannt, es gibt weder geschweifte Klammern noch begin...end. Es wäre gut für jede Programmiersprache, wenn man zum Strukturieren gezwungen wird. In einen Python-Code steigt man x-mal schneller rein als in einen schlechten Code der in anderen Programmiersprachen gemacht wurde.
-
[TAB]for[Leerzeichen](std::vector<int>::const_iterator[Leerzeichen]it[Leerzeichen]=v.begin[Leerzeichen](),[Leerzeichen]et[Leerzeichen]=[Leerzeichen]v.end[Leerzeichen]();[Zeil enumbruch] [TAB][Leerzeichen][Leerzeichen][Leerzeichen][Leerzeichen]it[Leerzeichen]!=[Leerzeichen]et;[Leerzeichen]++it)[Leerzeichen]{[Zeilenumbruch] [TAB][TAB]h[Leerzeichen](f[Leerzeichen](*it),[Leerzeichen]g[Leerzeichen](*it)); i (*it);[Zeilenumbruch] [TAB]}[Zeilenumbruch]Besser?

-
@ <sigi> : Keine Tabs heißt doch nicht keine Einrückung. Man nutzt sogar normalerweise die Tab-Taste für die Einrückung. Man stellt sich halt nur den Editor so ein, dass er die Tab-Zeichen durch jeweils einige Leerzeichen ersetzt. Das hat den Vorteil, dass der Code überall gleich aussieht.
Wenn einer eine Tab-Breite von 8 hat, dann geht ein Code, der mit einer Tab-Breite von 3 geschrieben wurde bei ihm vielleicht weit über den rechten Rand heraus. Deshalb nutze ich Leerzeichen statt Tabs. Die sind überall gleich breit.
-
Original erstellt von Noesis:
naja Gründe...
[cpp]
int bar () { //OK, Definition
int bar (); //OK, Deklarationint bar () //was jetzt? ";" vergessen, oder "{" in der nächsten Zeile?
/*Mit meinem System eindeutig!*/oder:
for (blablablasuperduperiterator i = stdcontainer.begin(); i != stdcontainer.end(); ++i);
{
copy (superduperdideldum);
setSmoking (NULL);
}Na, Fehler gefunden?
mitfor (int x = 0; x < 100; ++x) {
passiert das nicht![/cpp]die deklarationen werden sowieso vom quellcode der funktionen getrennt, d.h. sie kommen in die header dateien. also fällt die verwechslung schonmal weg.
die for schleife wird erstmal "am bildschirmrand" geteilt, das ; einer for schleife ist sehr selten (kaum braucht man eine schleife ohne "inhalt" und wenn, dann ne while und keine for)Der zweite Grund kommt von PeterTheMaster (
):for (;;) { /*hier kannst du leichter dinge reinkopieren*/ }[/QB]
das kann man doch hier besser:
for (;;) { //da rein }also, alles im allen noch kein wirklich überzeugender grund das anders zu machen
-
Ja einrücken tu ich sowieso:
int SmokerZone () { //Kannst ja trotzdem eine Leerzeile machen... if (Kiffer) { joinTheGrasCommunity (); bool t = Kiffer; t = Kiffer && (t || t && !Kiffer); t = t ? Kiffer : t; } else if (Nikotiner) { joinTheKubaCommunity (); if (isCommunism) isCommunism = (isCommunism != Kiffer) ? true : !Kiffer; int Was = (Nikotiner != Kiffer) ? GESCHNALLT : KOMMUNIST; throw "Oh, oh revolution!"; } }[ Dieser Beitrag wurde am 28.11.2002 um 21:56 Uhr von Noesis editiert. ]
-
Original erstellt von <sigi>:
**
die deklarationen werden sowieso vom quellcode der funktionen getrennt, d.h. sie kommen in die header dateien. also fällt die verwechslung schonmal weg.**Vorwärts-Deklarationen
-
Original erstellt von Daniel E.:
**
Besser? :)**Ja, OK! Jetzt hat es "Klick" gemacht.
...aber beim ersten Code. Das Problem hatte ich zuerst garnicht gesehen. ...das hat man natürlich mit Leerzeichen nicht. Da braucht man nichts "richtig machen". Es ist automatisch richtig. :pMir kam es mehr darauf an, dass man mit dem falschen Editor und Tabs schnell mal rechts aus dem Bildschirm rauskommt.
[ Dieser Beitrag wurde am 28.11.2002 um 22:04 Uhr von Gregor editiert. ]
-
[TAB]for[Leerzeichen](std::vector<int>::const_iterator[Leerzeichen]it[Leerzeichen]=v.begin[Leerzeichen](),[Leerzeichen]et[Leerzeichen]=[Leerzeichen]v.end[Leerzeichen]();[Zeil enumbruch] [TAB][Leerzeichen][Leerzeichen][Leerzeichen][Leerzeichen]it[Leerzeichen]!=[Leerzeichen]et;[Leerzeichen]++it)[Leerzeichen]{[Zeilenumbruch] [TAB][TAB]h[Leerzeichen](f[Leerzeichen](*it),[Leerzeichen]g[Leerzeichen](*it)); i (*it);[Zeilenumbruch] [TAB]}[Zeilenumbruch]Besser?

edit: Auch wenn das noch so cool aussieht reicht's normalerweise einmal ...
Also geh' ich wohl besser schlafen![ Dieser Beitrag wurde am 28.11.2002 um 22:14 Uhr von Daniel E. editiert. ]
-
Original erstellt von Noesis:
Vorwärts-Deklarationenkann man auch mit normalen deklarationen machen
-
Kann es sein, dass du dich wiederholst?
Ich habe bereits verstanden, was man mit Tabs für Probleme kriegen kann. Du brauchst das nicht nochmal posten!

Du wolltest sagen : Mit Tabs kann man sich schnell mal die Einrückung kaputt machen, da aus
for (std::vector<int>::const_iterator it = v.begin (), et = v.end (); it != et; ++it) {schnell mal etwas werden kann, wie :
for (std::vector<int>::const_iterator it = v.begin (), et = v.end (); it != et; ++it) {Naja! Eigentlich wolltest du wohl sagen, dass das nicht der Fall sein muss, wenn man an den richtigen Stellen Leerzeichen nimmt.
-
Original erstellt von Gregor:
**Kann es sein, dass du dich wiederholst?Ich habe bereits verstanden, was man mit Tabs für Probleme kriegen kann. Du brauchst das nicht nochmal posten!

Du wolltest sagen : Mit Tabs kann man sich schnell mal die Einrückung kaputt machen, da aus
for (std::vector<int>::const_iterator it = v.begin (), et = v.end (); it != et; ++it) {schnell mal etwas werden kann, wie :
for (std::vector<int>::const_iterator it = v.begin (), et = v.end (); it != et; ++it) {**
dann muss man aber schon ziemlich viel getrunken haben ...
-
Original erstellt von <;)>:
dann muss man aber schon ziemlich viel getrunken haben ...Nö! Man muss nur ne IDE/Editor mit ner anderen Tab-Breite nutzen. Schon sieht der Code so aus.
-
Original erstellt von Gregor:
[quote]Original erstellt von <;)>:
[qb]dann muss man aber schon ziemlich viel getrunken haben ...Nö! Man muss nur ne IDE/Editor mit ner anderen Tab-Breite nutzen. Schon sieht der Code so aus.[/QB][/QUOTE]
standard ist 4 leerzeichen, sonnst würde es zu schnell über den bildschirm rand gehen. da kann der ordentliche programmierer aber nichts dafür
-
Original erstellt von <:)>:
**
standard ist 4 leerzeichen, sonnst würde es zu schnell über den bildschirm rand gehen. da kann der ordentliche programmierer aber nichts dafür**4 Leerzeichen? Bei Tabs hast du keine Leerzeichen. Du hast nur ne Breite, die normalerweise 8 ist.
-
ich meine eine breite die 4 leerzeichen entspricht und die ist, wenn ich mich nicht irre, standard mäßig 4.
-
standard mäßig 4.
-
mäßig 4
...hört sich wie ne Schulnote an! 
Diese Breite ist nicht Standardisiert.
Jede IDE hat da andere Voreinstellungen. Bei Dev-C++ ist es glaube ich eine Breite von 2. Der Windows-Editor macht Tabs so breit, wie 8 Leerzeichen. Ich habe bei der IDE, die ich nutze, eingestellt, dass er ein Tab durch 3 Leerzeichen ersetzen soll. Würde ich mit Tabs arbeiten, dann hätten sie ne Breite von 3.[ Dieser Beitrag wurde am 28.11.2002 um 22:32 Uhr von Gregor editiert. ]
-
Dann arbeite halt mit Tabs und mit Leerzeichen...
-
ordentliche ide bieten die funktion "tabs in leerzeichen umwandeln"
-
also ich benutzer immer eindeutige Funktions oder Variablennamen, zumindest meistens
(außer i und j, das benutz ich immer als iterator). Von der ungarischen Notation halte ich überhauptnichts, genauso wie vom großschreiben von Bezeichnern
ich schreibe die eigentlich immer klein. m_ als Präfix für Member Variablen nutze ich auch seltener, falls sich mal eine lokale Variable/Argument mit dem Namen eines Members überschneided, kann man dieser meistens leicht _ anhängen oder zur Not per this-><bez> oder <classe>::<bez> drauf zugreifen.Und ich versuche keine C Casts zu benutzen, sondern C++ Casts.
Als Dateiendung nehmen ich *.cc und *.hh, ich benutze 2 Leerzeichen (also lasse die Tabs durch 2 Leerzeichen ersetzen :))