Ist mein Styl so schrecklich?



  • 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?



  • @Fellhuhn:

    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 schleifen

    for (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.


Anmelden zum Antworten