Ist mein Styl so schrecklich?
-
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.
-
Ah, okay, das macht Sinn, sorry.

-
LordJaxom schrieb:
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.
Von solche starren Regeln halte ich nichts, denn in bestimmten Situationen kann es vorkommen, daß es anderweitig der Code noch viel schlechter ist. Ein nicht zu tiefe Verschaltung ist wünschenswert, aber das sollte man nicht zum Dogma erheben.
-
#include <iostream> #include <string> using namespace std; int main() { cout << "Befinden Sie sich in einem gekuendigtem Arbeitsverhaeltnis?" << endl; string arbeitsverhaeltnis; cin >> arbeitsverhaeltnis; if(arbeitsverhaeltnis == "Ja" || arbeitsverhaeltnis == "ja") { cout << "Sie erhalten keine Aktien" << endl; return 0; } cout << "Wie lange arbeiten Sie schon in unserem Betrieb?" << endl; int arbeitsdauer; 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; }So, jetzt kann man es wieder ansehen

-
Und immer noch würde ich bei der ersten Frage mit "JA" antworten und mich wundern.

-
_matze schrieb:
Und immer noch würde ich bei der ersten Frage mit "JA" antworten und mich wundern.

dann lies die Frage... der Variablenname sagt leider genau das Gegenteil aus, das er sollte
-
#include <iostream> #include <string> using namespace std; int main() { cout << "Befinden Sie sich in einem gekuendigtem Arbeitsverhaeltnis?" << endl; string arbeitsverhaeltnis; cin >> arbeitsverhaeltnis; if(arbeitsverhaeltnis == "Ja" || arbeitsverhaeltnis == "ja") { cout << "Sie erhalten keine Aktien" << endl; return 0; }Man sollte immer mit angeben was fuer eine Eingabe das Programm erwartet.
Z.B.cout << "Befinden Sie sich in einem gekuendigtem Arbeitsverhaeltnis? (Ja/Nein)"
-
Is ja gut jetzt hab kapiert das es nicht gut aus sieht und ich arbeite dran.
-
Styler2008 schrieb:
Is ja gut jetzt hab kapiert das es nicht gut aus sieht und ich arbeite dran.
Ich denke, er meinte es nicht böse und wollte nur einen guten Vorschlag bringen... Du wolltest ja, dass wir dir Ratschläge geben, oder?
-
wo wir noch ein bisschen bei style sind...
warum schreiben so viele leute
int main() { // <----- if () { // <---- } } void func() { //<---- }also die klammer dahinter ? was hat das für ein vorteil ?
ich finde soetwas grausam zu lesen besonders bei schleifenfor (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { blub(); } }
-
Das is geschmackssache, genau so wie ich gerne die geschweiften Klammern mit einrücke. Gerade unter Javalern ist die öffnende Klammer in der selben Zeile aber sehr beliebt.
Dass es weniger Platz verbraucht und wenn man sich dran gewöhnt hat, man damit auch klar kommt, ist natürlich ein Argument dafür.
-
stylefrage schrieb:
wo wir noch ein bisschen bei style sind...
warum schreiben so viele leute
int main() { // <----- if () { // <---- } } void func() { //<---- }also die klammer dahinter ? was hat das für ein vorteil ?
ich finde soetwas grausam zu lesen besonders bei schleifenfor (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { blub(); } }[ironie mit ein bisschen wahrheit...]
Früher waren die Bildschirme und Festplatten klein, da musste man sparen wo man nur konnte....
[/ironie]
-
JustAnotherNoob schrieb:
Dass es weniger Platz verbraucht und wenn man sich dran gewöhnt hat, man damit auch klar kommt, ist natürlich ein Argument dafür.
Ich würde sogar sagen, das ist das Argument :p
Naja, natürlich ist es Geschmackssache, und jeder sollte es so machen, wie es ihm am besten geht. Ich persönlich finde geschweifte Klammern am Ende der Zeilen auch hässlich und unübersichtlich. Da verschwende ich lieber mehr Platz. Man schreibt ja auch nicht mehrere Anweisungen pro Zeile, um Platz zu sparen.
-
Ich würde mir folgenden Stil angewöhnen:
80x25: passt immer genau in ein Konsolenfenster.
Voll-funktionsfähiges Beispiel eines Computerspiels:
include <allegro.h> /* Obfuscated Code Jigsaw - Ryan Patterson */ #include <stdio.h> /* This program is my entry into the 2004 Allegro */ #include <string.h> /* ScreenHack competition. The game is a classic jigsaw */ /* puzzle. Simply move pieces around to piece back together my horribly */ /* obfuscated code. Compiles with gcc 3.3.1 and MSVC 7. Note that the file */ /* needs to be run from the same directory as its source file -- it reads in */ /* its source as the background for the puzzle. Even has animation. Enjoy! */ int i,x,y,p=4,m=0;BITMAP*b[25],*d[25],*s,*w;char l[81],*c;k(){if((i==p-1&&p%5!= 0)||(i==p+1&&p%5!=4)||(i==p+5&&p<20)||(i==p-5&&p>4)){w=b[p];b[p]=b[i];b[i]=w;p= i;if(!*l)++m;}}main(){FILE*f=fopen(__FILE__,"r");srand(time(NULL));allegro_init ();install_keyboard();install_mouse();set_color_depth(32);set_gfx_mode(GFX_AUT\ ODETECT_WINDOWED,640,200,0,0);s=create_bitmap(640,200);clear(s);for(i=0;i<25&&! feof(f)&&*fgets(l,81,f);++i,*l=0){if(strlen(l)<2){--i;continue;}c=strchr(l,13); if(!c)c=strchr(l,10);if(c)*c=0;textout(s,font,l,0,i*8,-1);}fclose(f);for(x=0;x< 5;++x)for(y=0;y<5;++y)b[y*5+x]=d[y*5+x]=create_sub_bitmap(s,x*128,y*40,128,40); clear(b[p]);*l=1;while(!key[KEY_ESC]){if(!*l){if(!(mouse_b&1))continue;i=(mous\ e_y/40)*5+(mouse_x/128);k();i=0;for(x=0;x<5;++x)for(y=0;y<5;++y)if(b[y*5+x]!=d[ y*5+x])i=1;if(!i){textprintf(screen,font,392,168,0xff00,"You won in %d moves!", m);rest(2000);readkey();break;}}else{textprintf(screen,font,392,168,0xff0000,"\ Randomizing... %d%%",(unsigned char)*l*100/255);rest(100);switch(rand()%4){case 0:i=p-1;break;case 1:i=p+1;break;case 2:i=p-5;break;case 3:i=p+5;break;}k();++* l;}show_mouse(NULL);for(x=0;x<5;++x)for(y=0;y<5;++y)blit(b[y*5+x],screen,0,0,x* 128,y*40,128,40);for(x=1;x<5;++x)vline(screen,x*128,0,200,-1);for(y=1;y<5;++y)\ hline(screen,0,y*40,640,-1);show_mouse(screen);}for(i=0;i<25;++i)destroy_bitmap (b[i]);destroy_bitmap(s);}END_OF_MAIN()/*Thanks for playing! Hope you enjoyed*/