• Hiho,
    da viel diskutiert wird und in diesem Gebiet noch ziemlich neu bin, wollte ich einfach mal fragen, was ihr von meinem Code haltet.


    Programm funktioniert, geht mir nur um den Stil. Will mir ja keinen Stuss aneignen.

    Edit: Habs erneuert. (Variabeln verändert und Größe / Kleine Zahl von 4 Zahlen finden hinzugefügt)
    Alte Version im Spoiler.
    [SPOILER2]

    [/SPOILER2]

    [CENTER][/CENTER]

  • Für den Anfang völlig ok, jedoch kannst du dir das ganze std::cout etc. eigentlich sparen indem du am Anfang einfach using namespace std; benutzt.

    Dann weiß er automatisch das du die Standart Library benutzen willst für Eingaben oder Ausgaben etc.

    Und du kannst auch vor den Variablen Namen immer eine Abkürzung benutzen damit du weißt welcher Datentyp deine Variable eigentlich ist.

    zb. int iTest;

  • Habe schon gehört, dass das zu Probleme führen könnte, wenn ich mehrere Bibliotheken benutze. Ist da was dran?

    €: Danke erstmal für deine Antwort.

    [CENTER][/CENTER]

  • Zitat von Delinquenz;315213

    Habe schon gehört, dass das zu Probleme führen könnte, wenn ich mehrere Bibliotheken benutze. Ist da was dran?

    €: Danke erstmal für deine Antwort.

    Es kann zu Problemen führen wenn du mehrere Librarys benutzt und eines Tages die Funktion einer Library erweiterst. Wenn du halt zb. in der neuen geupgradeten Library einen gleichen Funktionsnamen wie in einer anderen Library hast kann es zu Problemen führen, aber da du momentan dann nur using namespace std; benutzen würdest kommt es auch zu keinen Konflikten.

    Ach und wegen den Variablen Namen, gewöhne dir einfach so schnell wie möglich einen bestimmten Syntax an, da es sonst wie Kuddelmuddel aussieht.

    Zb. iTestVariable oder iTestvariable.

    Das musst du dann wissen.

  • Wie ich dir schon in Skype geschrieben habe, benutze für die Variablen am Besten die Kamelnotation.
    Beispiel:
    int ichBinEineVariable;
    oder mit dem jeweiligen Datentyp davor:
    int iIchBinEineVariable;

    [SIGPIC][/SIGPIC]

  • Nutze einfach keine Notation, gibt es zahlreiche Texte drüber warum man es nicht machen sollte.
    kannst nach einer geklammer auch ne leerzeile machen:
    int main()
    {
    foo();
    }

    bei if's oder so gibt es 3 varianten

    if (selection == 1)
    oder
    if( selection == 1 )
    oder if(selection == 1)

    je nachdem wie du's schön findest.

  • Ist es empfehlenswert bzw ok, wenn man vor jeder Variable den Datentyp schreibt? Oder nur bei ähnlichen?

    Killeroo, wieso sollte man keine Notationen nutzen? (Sofern ich jetzt verstanden hab, sind Notation z.B. iTestVariable)

    [CENTER][/CENTER]

  • Nenn mir einen ordentlichen Grund, warum man z.B. nicht die Kamelnotation benutzen sollte.
    Das macht für jeden Entwickler die Variablen wesentlich einfacher zu lesen.
    Was ist einfacher?
    int ichbineineziemlichlangevariablediemannichtgutlesenkannweilnotationunnoetigist
    oder
    int iIchBinEineZiemlichLangeVariableDieManGutLesenKannWeilNotationSehrwohlNoetigIst

    edit: Die Leerzeichen in der Variablen entstehen automatisch, hab sie dort nicht hingemacht

    [SIGPIC][/SIGPIC]

  • Making Wrong Code Look Wrong - Joel on Software
    compiler haben eine typerkennung ausserdem sollte man als "entwickler" signifikante namen nutzen.

    es ist einfach nicht nötig, man kann es natürlich machen, oder wenn der standard der firma wo du arbeitest eine notation vorraussetzt wenn man selber es gut findet wie auch immer..

  • Zitat von Killerooo;315226

    Making Wrong Code Look Wrong - Joel on Software
    compiler haben eine typerkennung ausserdem sollte man als "entwickler" signifikante namen nutzen.

    es ist einfach nicht nötig, man kann es natürlich machen, oder wenn der standard der firma wo du arbeitest eine notation vorraussetzt wenn man selber es gut findet wie auch immer..

    Du kannst ja signifikante Namen benutzen für deine Variablen, jedoch benutze ich auch Notationen da ich es so gelernt habe und ich so einen besseren Überblick habe.

    Da Notationen halt den Code auch in der Perfomance auch nicht beeinflussen, sehe ich es nicht als Problem.

    Aber an dem Punkt muss jeder selber wissen wie gerne arbeiten möchte.

  • Es gibt zahlreiche Style-Guides für Quelltexte. Die Frage nach dem richtigen ist wie die Frage nach der richtigen Religion ... Such dir einen aus, wichtig ist nur, ihn innerhalb vom Projekt nicht zu wechseln.

  • Klar, gibt es verschiedene optimale Stile. Wollte jedoch wissen, ob ich mit meinem Stil zu einem dieser gehöre.

    Ich bleibe vorerst bei der Notation, da mich die Argumente für die Notation mehr überzeugen.

    [CENTER][/CENTER]

  • Es ist sehr viel Einfacher wenn man den Typ vor einer Variable setzt, hier ein Beispiel:

    Zitat


    int nLevel;
    bool bLevel;
    byte byLevel;
    long lLevel;
    ...

    Somit kann man bereits erkennen wenn man mehr als nur paar Dateien Code hat und die Variable oft braucht das man den und den Typ hat. (Finde ich zumindest)

    Du solltest auch berücksichtigen das zu große Variablen die nicht benötigt werden in dem sinne nur Speicher verhauen ist, das wirst du ab einer bestimmten größe des Programme's merken, hier auch ein Beispiel:

    Zitat


    int nPorno;
    for( int i = 0; i < 5; i++ )
    ...

    Nun kann int nPorno eine viel seitige zahl enthalten bis rauf zu 2.14 (INT_MAX) dennoch speicherst du in nPorno nur zahlen von 0 bis 100 was den rest der 2.14 Mrd nutzlos macht, dadurch verhaust du Speicher, nutz Byte (Max. 255, kein -) und du wirst keine Risiken zwecks Overflow oder sonstiges haben, das selbe bei der For schleife, wenn du eine begrentzte zahl hast wie oben die 5, kannst du auch byte nutzen.

    Bei einfachen If abfragen kannst du die {} weg lassen, hier ein Beispiel:

    Zitat


    if( bTest == true )
    thisthisthis();

    Dies kann nur angewendet werden wenn man nur eine Aufgabe hat sobald bTest true ist, dies funktioniert auch bei For Schleifen o.a.

    Abgekürtzte If/Else Abfragen solltest du dir auch mal ansehen, nehmen wir an du hast bool bTest, diese setzt dein Programm auf true nach einer zeit, du willst das prüfen ob die auf true ist und dann eine meldung ausgeben, wenn sie nach wie vor auf false ist dann eine andere meldung, dann kannst du es wie folt machen:

    Zitat


    bTest ? MessageBox( NULL, "True", "True", NULL ); : MessageBox( NULL, "False", "False", NULL );

    Ist anstat Normal 4 Zeile eine.

    Wie du siehst gibt es sehr sehr sehr viele sachen wo man abkürzen kann, aber jeder muss selbst wissen worin er übersicht hat oder nicht.

    Ps: Setz dich mal etwas mit "atoi()" auseinander, damit kannst du Zahlen aus einem String heraus holen, somit brauchst du nur ein Token und nicht x Variablen. =)

    Mfg. Crasy

  • Zitat

    Abgekürtzte If/Else Abfragen solltest du dir auch mal ansehen, nehmen wir an du hast bool bTest, diese setzt dein Programm auf true nach einer zeit, du willst das prüfen ob die auf true ist und dann eine meldung ausgeben, wenn sie nach wie vor auf false ist dann eine andere meldung, dann kannst du es wie folt machen:

    bTest ? MessageBox( NULL, "True", "True", NULL ); : MessageBox( NULL, "False", "False", NULL );
    Ist anstat Normal 4 Zeile eine.

    Das halte ich aber für einen Anfänger nicht ratsam, weder beim kompilieren ( da sogar bei einigen Compilern langsamer )
    noch beim Programmablauf ist diese Schreibweise schneller, das nimmt sich dann nämlich nix mehr und
    ist für einen Anfänger doch ein wenig unübersichtlich.

  • Zitat

    Es ist sehr viel Einfacher wenn man den Typ vor einer Variable setzt, hier ein Beispiel:


    Du meinst die ungarische Notation?!

    Na ja, ich finde das nicht wirklich einfacher. Wenn du so eine Variable nutzt, musst du auch wissen, was sie überhaupt speichert; und dann weißt du in der Regel auch, von welchem Typ sie ist. Zudem kennt auch jede gute IDE den Datentyp einer Variable.

    Zitat

    Du solltest auch berücksichtigen das zu große Variablen die nicht benötigt werden in dem sinne nur Speicher verhauen ist, das wirst du ab einer bestimmten größe des Programme's merken, hier auch ein Beispiel:


    Okay ... Auf dem PC spielt das sicher keine Rolle. Damit speicherst du genau drei Bytes ... Erst wenn man 350 000 Mal drei Bytes einspart kommt man auf ein Megabyte. Das ist daher doch sch**** egal. Irgendwelche Resourcen wie Bilder, Videos, Models, ... nehmen da doch ein Vielfaches an Speicher in Anspruch.

    Zitat

    Bei einfachen If abfragen kannst du die {} weg lassen, hier ein Beispiel:


    Du machst deinen Code unleserlicher und anfälliger für Bugs, nur, um zwei Klammern einzusparen? Netbeans gibt mir sogar eine Warnung aus, wenn ich die {} weg lasse.

  • Zitat

    Du machst deinen Code unleserlicher und anfälliger für Bugs, nur, um zwei Klammern einzusparen? Netbeans gibt mir sogar eine Warnung aus, wenn ich die {} weg lasse.

    Anfälliger? naja, weniger? es kommt auch darauf an was für ein Compiler man nutzt.

    Ich Persönlich nutze den Intel Compiler, dies in VS2012 inkl. vAssistX und das bringt schon einiges an Leistung raus und gibt dir meist sogar den Rat das so zu machen anstat anders.

    Pers. ist das meine weiße etwas zu machen, wie ihr das seht muss euch überlassen sein.

    Noch ein Rat: Installier dir vAssistX bringt einiges in sachen übersicht und du kannst Variablen im ganzen Source abfragen etc, sehr nützliches Tool.

  • Zitat

    Anfälliger? naja, weniger? es kommt auch darauf an was für ein Compiler man nutzt.

    Ich Persönlich nutze den Intel Compiler, dies in VS2012 inkl. vAssistX und das bringt schon einiges an Leistung raus und gibt dir meist sogar den Rat das so zu machen anstat anders.


    Mit anfälliger meinte ich, dass es bei dieser Notation durch spätere Modifikation des Quelltextes eher zu Bugs führt, da man schnell das Fehlen der Klammern übersehen kann. Erst recht wenn zwei solcher Blöcke verschachtelt sind.

    Ich kann mir beim besten Willen nicht vorstellen, dass dir diese Notation einen Geschwindigkeitsvorteil gibt (erst recht keinen spür- bzw. messbaren). Moderne Compiler optimieren den Quelltext so stark, dass der Unterschied zwischen if(foo) { bar(); } und if(foo) bar(); im Produkt sicher nicht mehr zu erkennen ist (und entsprechend wird es auch keinen Unterschied machen).

  • Danke für eure zahlreichen Antworten =)

    Die gekürzten If-Schleifen (auch die ohne Klammern) gefallen mir irgendwie nicht so ganz.

    Ansonsten haben mir hier einige Tipps schon sehr geholfen. Fand jedoch Schade, dass Killeroo kaum Argumente gegen die Notation gebracht hat (Eine englische Wall of Text posten ist für mich leider kein Argument, sorry)

    [CENTER][/CENTER]

  • If ist keine Schleife (nenn es lieber If-Konstruktion, If-Statement, Fallunterscheidung, ... - aber nicht If-Schleife, denn das ist falsch).

    Argumente gegen die Ungarische Notation:

    * Überflüssig: Jede gute IDE kennt die Typen der deklarierten Variablen.
    * Hinderlich: Die Autovervollständigung der IDE schlägt in manchen Fällen erst nach mehr eingebenen Zeichen die richtige Variable vor (bspw. wenn die Variablen foo und bar deklariert wurden: ohne Ungarische Notation kann die Autovervollständigung nach einem bzw. zwei Zeichen unterscheiden, wenn die Variablen hingegen die Bezeichnungen m_arrIFoo und m_arrIBar tragen erst nach sieben Zeichen (die Präfixe sind willkürlich gewählt; ich kenne die Notation nicht wirklich)).

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!