Ist mein Styl so schrecklich?
-
Styler2008 schrieb:
Hast du zufällig ein kleines Beispiel Matze?
if() { //Klammernpaar 1 wird in Spalte 0 geöffnet //nach einer geschweiften Klammer werden 2 Stellen eingerückt if() { //Klammernpaar 2 wird in Spalte 2 geöffnet //... } //Klammernpaar 2 wird in Spalte 2 geschlossen } //Klammernpaar 1 wird in Spalte 0 geschlossenDu kannst natürlich auch eine Tabweite von 3 oder 4 benutzen. Wichtig ist die konsequente Anwendung von solchen Regeln.
-
Grundsätzlich kannste dir merken:
mehr als 3 Ebenen stinken!
void function() { if( /* erste */ ) { while( /* zweite */ ) { if( /* dritte - äußerstes maximum! */ ) { } } } }das hebt sich natürlich ein bisschen auf, da man gewöhnlich in namespaces und klassen noch ein wenig weiter einrückt, aber mehr sollten es nicht sein. kleiner tipp, wie man sowas bewerkstelligen kann:
anstatt
void myoutput(mytype* ptr) { if(ptr) { if(ptr->whatever()) { if(!ptr->is_set()) { // do stuff } } } }lieber
void myoutput(mytype* ptr) { if(!ptr) return; // vorzeitig raus if(ptr->whatever() && !ptr->is_set()) { // do stuff } }von der 3. auf die 1. einrückungsebene runter

-
Also die Einrückung ist schon etwas groß, da schliess ich mich an :).
Aber ich würds nicht so schwer nehmen, hehe. Das kommt alles mit der Zeit. Rein syntaktisch isses egal wo die Klammern sind, wir sind hier nicht bei Python :P.
Allerdings merkst du es mit der Zeit selbst wie du Deinen Code am besten nach 3 Monaten wieder verstehst.
Wenn andere Deinen Code lesen MÜSSEN ist es wieder was anderes.
Kommt Zeit, kommt Wissen, kommt Code-Style..
Mach Dir wie gesagt keinen Kopf
rya.
-
Super Xantus wusst gar ned das es sowas gibt hmm gefällt mir werd ich gleich mal ausprobieren und es wo einbauen!
Danke
-
Styler2008 schrieb:
Super Xantus wusst gar ned das es sowas gibt hmm gefällt mir werd ich gleich mal ausprobieren und es wo einbauen!
Was für
returnin Funktionen gilt, kannst du auch mitbreakin Schleifen anwenden, um diese zu verlassen.continueführt in Schleifen dazu, dass der nächste Schleifendurchgang beginnt.
-
Scorcher24 schrieb:
Rein syntaktisch isses egal wo die Klammern sind, wir sind hier nicht bei Python :P.
Stimmt, mit Python brauchst Du nämlich die ganzen geschwungenen Klammern nicht.
-
nman schrieb:
Scorcher24 schrieb:
Rein syntaktisch isses egal wo die Klammern sind, wir sind hier nicht bei Python :P.
Stimmt, mit Python brauchst Du nämlich die ganzen geschwungenen Klammern nicht.
Das stimmt, aber da müssen die Einrückungen stimmen

rya.
-
Xantus schrieb:
void myoutput(mytype* ptr) { if(!ptr) return; // vorzeitig raus if(ptr->whatever() && !ptr->is_set()) { // do stuff } }Das ist aber auch nicht immer sinnvoll. Denn so muss man bei jedem return alles freigeben was per new erstellt wurde.
-
Fellhuhn schrieb:
Das ist aber auch nicht immer sinnvoll. Denn so muss man bei jedem return alles freigeben was per new erstellt wurde.
Das Problem hast Du immer, denn Du vergisst die "versteckten Returns" (throw in dieser Funktion oder noch schlimmer throw in aufgerufener Funktion). Deshalb schützt man auch alles per new erstellte immer mit Guards. RAII lässt grüßen

-
LordJaxom schrieb:
Fellhuhn schrieb:
Das ist aber auch nicht immer sinnvoll. Denn so muss man bei jedem return alles freigeben was per new erstellt wurde.
Das Problem hast Du immer, denn Du vergisst die "versteckten Returns" (throw in dieser Funktion oder noch schlimmer throw in aufgerufener Funktion). Deshalb schützt man auch alles per new erstellte immer mit Guards. RAII lässt grüßen

In den meisten Fällen viel zu viel Aufwand. Zumindest in meinem aktuellen Projekt das schon mehrere Tausend Klassen etc. hat nicht vertretbar. Mit Exceptions wird da aber auch eh nicht gearbeitet.

-
Und in Projekten mit tausenden Klassen, die mit Exceptions arbeiten?

BTW, was ist an einem shared_ptr< xyz > x( new xyz ) so viel weniger vertretbar als an xyz* x = new xyz; ..... delete x; ?
-
Wie lange ist das schon im Standard? Weil einige unserer (gnu) Compiler haben hier schon mit at() von std::vector Probleme.

-
Fellhuhn schrieb:
Wie lange ist das schon im Standard? Weil einige unserer (gnu) Compiler haben hier schon mit at() von std::vector Probleme.

Naja, einige Firmen haben ja auch noch mit C++98 Probleme... da kann man verstehen warum einige Compiler noch keine TR1 unterstützung haben, oder sich Einige alternativ gegen die Boost-Bibliotheken stemmen (die ja sowohl eine TR1 Umsetzung mitbringt als auch die Smartpointer innerhalb des boost-Namensraumes)...
cu André
-
Wenn der Code über 12 Jahre alt ist, sind es die Kunden meist auch (also die Systeme die die haben, nicht die Kunden selbst :D) und dann wollen die ständig Neuentwicklungen aber keine neuen Rechner... Naja... Wirtschaft halt.

-
int main() { string arbeitsVerhaeltnis; int arbeitsDauer; cout << "Befinden Sie sich in einem gekuendigtem Arbeitsverhaeltnis?" << endl; cin >> arbeitsVerhaeltnis; if( arbeitsVerhaeltnis == "Ja" || arbeitsVerhaeltnis == "ja" ) { cout << "Sie erhalten keine Aktien" << endl; } else { cout << "Wie lange arbeiten Sie schon in unserem Betrieb?" << endl; cin >> arbeitsDauer; } if( arbeitsDauer >= 10 ) { cout << "Sie erhalten Zwanzig Aktien" << endl; system("PAUSE"); } if( arbeitsDauer <= 2 ) { cout <<"Sie erhalten keine Aktien" << endl; system("PAUSE"); } if( arbeitsDauer > 2 && arbeitsDauer < 10 ) { cout << "Sie erhalten Zehn Aktien" << endl; system("PAUSE"); } return 0; }Sähe bei mir so aus, nur mal so als weiters Beispiel.
-
So geht es auch (kürzer):
// ... if( arbeitsDauer >= 10 ) { cout << "Sie erhalten Zwanzig Aktien" << endl; } else if( arbeitsDauer <= 2 ) { cout <<"Sie erhalten keine Aktien" << endl; } else { cout << "Sie erhalten Zehn Aktien" << endl; } system("PAUSE"); return 0;
-
Styler2008 schrieb:
Hallo Community!
Ich höre seit 1 Woche immer wieder das kein c++ Programier styl so schrecklich ist...
Als erstes müssen die "if else" Ebene stimmen, dann kann man den letzten Vergleich ganz weglassen, er ist logisch überflüssig und Formatierung sollte einheitlich sein. Ob man nun die öffnende Klammern ans Zeilenende schreibt, oder in eine eigene Zeile ist persönlicher Geschmack, aber die Einrückung danach für den Code muß sein.
Das system("PAUSE") habe ich rausgeschmissen, daß ist nicht portabel und eine DOS/Windows Geschichte.// Aktien.cc - Programm bzg. Aktien #include <ostream> #include <iostream> #include <string> #include <cstdlib> using namespace std; int main() { string Arbeitsverhaeltnis; int Arbeitsdauer; cout << "Befinden Sie sich in einem gekuendigtem Arbeitsverhaeltnis?" << endl; cin >> Arbeitsverhaeltnis; if ((Arbeitsverhaeltnis == "Ja") || (Arbeitsverhaeltnis == "ja")) { cout << "Sie erhalten keine Aktien" << endl; return EXIT_SUCCESS; } cout << "Wie lange arbeiten Sie schon in unserem Betrieb?" << endl; cin >> Arbeitsdauer; if (Arbeitsdauer >= 10) { cout << "Sie erhalten Zwanzig Aktien" << endl; } else if (Arbeitsdauer <= 2) { cout <<"Sie erhalten keine Aktien" << endl; } else { cout << "Sie erhalten Zehn Aktien" << endl; } // EXIT_SUCCESS signalisiert das korrekte Ende des Programms return EXIT_SUCCESS; }
-
Scorcher24 schrieb:
Also die Einrückung ist schon etwas groß, da schliess ich mich an :).
Aber ich würds nicht so schwer nehmen, hehe. Das kommt alles mit der Zeit. Rein syntaktisch isses egal wo die Klammern sind, wir sind hier nicht bei Python :P.ja, das stimmt schon, aber Einrückungen bzw. auch Tab-Width sind ja auch desöfteren Streitgrundlagen
Tab-Width 4 vs. Tab-Width 8 vs. 4 Whitespaces vs. 2 Whitespaces ... usw...da gibts glaub ich auch nen Mailinglisten-Streit mit Linus-Torvalds, der Tab-Width 8 vertritt, und dabei auf die Anzahl der Einrückungsebenen eingeht. Musste beim Lesen erstmal müde lächeln und hab mir gedacht "so ein quatsch, bei den breiten Bildschirmen heute...", aber es hilft wirklich, gerade, als ich mir dann mal alten code von mir angesehen hab und am Ende mehrere Zeilen nur noch
//.... } } } } } } } // ...gesehen hab. Da hat diese recht "harte" Regel von ihm wirklich Sinn gemacht.
-
Xantus schrieb:
//.... } } } } } } } // ...gesehen hab. Da hat diese recht "harte" Regel von ihm wirklich Sinn gemacht.
Und
//.... } } } } } } } // ...ist übersichtlicher?
-
Xantus schrieb:
da gibts glaub ich auch nen Mailinglisten-Streit mit Linus-Torvalds, der Tab-Width 8 vertritt, und dabei auf die Anzahl der Einrückungsebenen eingeht.
Es ging im Beispiel denke ich nicht um die Tab-Breite, sondern um die Anzahl der Ebenen. Man sollte vielleicht dazusagen, dass Linus in besagtem Gespräch insofern auf die Anzahl der Ebenen eingeht, als dass diese maximal drei oder vier (wenn ich es richtig in Erinnerung habe) sein sollte.