Meine liebe Hassliste



  • Wenn man SHA/AES etc. implementiert, braucht man sowas quasi die ganze Zeit, da finde ich den Cast doch zu nervig. 😉 Abgesehen davon schreit const char* nach C-String, daher finde ich es eher unpassend. const void* sagt: Einfach nur Speicher, völlig egal was drin steht.



  • Huch, ich finde ein Leerzeichen nach if oder for aber nicht schön.



  • Eisflamme schrieb:

    Huch, ich finde ein Leerzeichen nach if oder for aber nicht schön.

    Das ist mittlerweile aber schon üblicher als dort kein Leerzeichen zu machen. 😉



  • Okay, also geht es hier um Gewohnheit. Ergibt ja auch Sinn.

    if (a == b)
    

    Ich finde hier aber, dass der Ausdruck irgendwie losgekoppelt vom if wirkt. So wie (a == b) und weiter? Ach, da steht ja links noch "ganz verloren" ein if.

    Ich meine, die Schreibweise ähnelt für mich der Funktionsschreibweise. Niemand fordert f(x) als f (x) zu schreiben, oder? Das wäre ja seltsam.

    Und das hier ist zwar keine Funktion, aber warum sollte man hier ein zusätzliches Leerzeichen einfügen? Finde ich erstmal un-intuitiv (<- wieso gibt es hierfür kein deutsches Wort?)



  • Nein.
    In C++ werden Variablen erst dann deklariert, wenn sie verwendet werden.
    Laut deiner Theorie kann ich ja alles in den globalen Namespace packen und gut ist.



  • TravisG schrieb:

    Bin ich der einzige, der keine Hassliste für fremden Code hat? Jeder der hier drin seine Hassliste auflistet, hat in seinem Code Sachen, die bei jemand anderem in ner Hassliste stehen.

    Warum soll man sich über sowas aufregen?

    Es wäre darüberhinaus sinnvoll, diese Hasslisten mal alle in einer Wiki zu vereinen und ihre Pros und Contras anzuführen, falls es verschiedene Meinungen geben sollte.

    Dadurch wäre das ganze hier wenigstens produktiv.



  • Nathan schrieb:

    Nein.
    In C++ werden Variablen erst dann deklariert, wenn sie verwendet werden.
    Laut deiner Theorie kann ich ja alles in den globalen Namespace packen und gut ist.

    Nein, sie gehören an den Anfang (z.b. dem Beginn der Funktion).

    Das tut man für den Programmierer, damit der eine Übersicht hat, welche Variblennamen überhaupt deklariert wurden und warum es sie gibt.

    Variablen irgendwo mitten in der Funktion zu deklarieren ist schlechter Programmierstil und das hat nichts mit C++ zu tun, sondern gilt für jede Sprache.



  • lol, ein Pascal-Troll. 😃

    class SuperHeavyObject
    {
        // Braucht 10 Sekunden zum Erzeugen und 5 zum Zerstören und frisst 100MB RAM.
    };
    
    void Foo()
    {
        SuperHeavyObject obj;
        if (condition)
            return;
        obj.Bar();
    }
    
    void Foo()
    {
        if (condition)
            return;
        SuperHeavyObject obj;
        obj.Bar();
    }
    

    Na? 😉



  • Dobi schrieb:

    lol, ein Pascal-Troll. 😃

    class SuperHeavyObject
    {
        // Braucht 10 Sekunden zum Erzeugen und 5 zum Zerstören und frisst 100MB RAM.
    };
    
    void Foo()
    {
        SuperHeavyObject obj;
        if (condition)
            return;
        obj.Bar();
    }
    
    void Foo()
    {
        if (condition)
            return;
        SuperHeavyObject obj;
        obj.Bar();
    }
    

    Na? 😉

    Lerne den Unterschied zwischen Variablendeklaration und Initialisierung.



  • Lerne RAII kennen.
    Variablendeklaration ist Initialisierung.
    Wozu gibt es sonst Konstruktoren?

    Edit: Wozu gibt es in C++ sonst das Schlüsselwort auto?
    Bei der Deklaration ist es sinnfrei, bei der Initialisierung nützlich.



  • nope7777 schrieb:

    Lerne den Unterschied zwischen Variablendeklaration und Initialisierung.

    Meinst du sowas?

    void Foo()
    {
        SuperHeavyObject* obj;
        if (condition)
            return;
        obj = new SuperHeavyObject;
        obj->Bar();
        delete obj;
    }
    

    Nein, das ist eben genau das, was ich nicht haben will.

    Edit: Nathan hat dir schon den richtigen Hinweis gegeben, worum es geht.

    So, und jetzt haben wir aber genug mit Fischen um uns geworfen. 😉



  • Nathan schrieb:

    Edit: Wozu gibt es in C++ sonst das Schlüsselwort auto?
    Bei der Deklaration ist es sinnfrei, bei der Initialisierung nützlich.

    Öhm.
    Definition:

    int main(){
      auto crk=vec.begin();
    

    nützlich.

    Definition:

    auto crk=::vec.begin();
    int main(){
    ...
    

    nützlich.

    Deklaration

    extern auto crk=::vec.begin();
    int main(){
    ...
    

    nützlich!
    Nur erlaubt es C++ so noch nicht.



  • Ich meinte so etwas wie:

    int var;
    string var2;
    ...
    


  • Variablen am Anfang einer Funktion zu deklarieren ist vollkommener Quatsch.
    Dabei geht's auch nicht um Performance, sondern gerade um Übersichtlichkeit. Die darunter eben leidet.

    Wozu soll ich den Grossteil der Variablen erstmal ohne Zuweisung definieren, nur damit ich dann ein paar Zeilen weiter nochmal nen Wert zuweise? Das ist bloss Verschwendung von Bildschirmplatz & Lebenszeit.



  • hustbaer schrieb:

    Variablen am Anfang einer Funktion zu deklarieren ist vollkommener Quatsch.
    Dabei geht's auch nicht um Performance, sondern gerade um Übersichtlichkeit. Die darunter eben leidet.

    Die Fehlervermeidung ist der Hauptgrund. Man macht weniger Fehler bei mehr Übersichtlichkeit.
    Die Übersichtlichkeit ist zentral. Die ist besser, wenn Variablen so lokal woe möglich sind.
    Und die Performance ist auch noch besser, weil der Compiler dann besser optimieren kann.

    So wenigstens bei C++ mit RAII und dem ganzen Quark. Wenn man alten Pascal/C-Code schreibt mit Funktionen über 4 Bildschirme und ohne RAII, dann alle oben definieren.



  • Spaces zum Einruecken missbraucht. Machen nur Leute, die den Unterschied zwischen einruecken und ausrichten nicht verstanden haben.



  • Hat keiner Argumente für if ( statt if(?



  • Ich mag if ( lieber?



  • Also ich finde, ich hab schön argumentiert mit meinem Vergleich zu Funktionen, bei denen das Leerzeichen ja auch komisch aussieht. Ich präferiere if( und habe meinen Standpunkt auch unterlegt. :p



  • Eisflamme schrieb:

    Hat keiner Argumente für if ( statt if(?

    Ich mag if ( lieber, da das if, als Schlüsselwort, speziell vom Editor gekennzeichnet wird. Es unterscheidet sich also von einem normalen Funktionsaufruf. Außerdem erwartet if nicht nur eine Parameterliste, sondern ganze zwei, da sieht das nicht mehr wohlgeformt aus wenn man es in typischer Objektsyntax schreiben würde: if(cond)(block1).else(block2)

    Ich mag daher Programmiersprachen, die ein then Schlüsselwort haben, da kann man dann if ... then ... else ... schreiben ohne irgendwelche Klammern.

    Kellerautomat schrieb:

    Spaces zum Einruecken missbraucht. Machen nur Leute, die den Unterschied zwischen einruecken und ausrichten nicht verstanden haben.

    Oder Leute, die manuelles Ausrichten hässlich finden (bzw. sogar ganz ablehnen) und sowieso immer spaces verwenden.


Anmelden zum Antworten