Organisation von Code



  • It0101 schrieb:

    Und das macht aus meiner Sicht sehr wohl Sinn.

    Da hast Du was falsch verstanden. UN taugt bei Krüppelsprachen wie C was. Wir können gewisse Informationen stattdessen besser und compilergeprüft in die Typen stecken. Und da, wo das sich nicht bewährt, bewährt sich UN auch nicht.



  • Du bist immer noch auf dem falschen, dem Typendampfer. Un war ursprünglich nicht für Typen und hat daher auch nichts mit einem Typsystem zu tun.



  • Tyrdal schrieb:

    Du bist immer noch auf dem falschen, dem Typendampfer. Un war ursprünglich nicht für Typen und hat daher auch nichts mit einem Typsystem zu tun.

    Ich habe es ausprobiert. Die richtige Version, wo man mit Präfixen zum Beispiel die x-Koordinaten von den y-Koordinaten trennt und bei xFoo=(xBar-yMal)/2; sofort weiß, daß das Unfug ist. x*y geht ja, aber x+y ist fast immer falsch. Ich habs auch mit Typen gemacht. Schon vor 10 Jahren. Und daher weiß ich, daß die Ungarische Notation nicht sachdienlich ist.



  • It0101 schrieb:

    inline void         Funktion1  ( int a, int b )        { return bla; }
           unsigned int Funktion2  ( int c );
           double       Funktion22 ( int d, int e, int f );
    

    Hab ich wohl übersehen, ganz so ähnlich wie du formatiere ich den Code dann doch nicht. 😉

    Das Problem bei diesem Ansatz ist, dass du extrem unflexibel bist und bei einem const std::map<bla, std::string>& -Parameter die Spalten unnötig in die Länge ziehst. Klar, typedef wäre eine Möglichkeit, aber oft lohnt sich ein typedef deswegen nicht oder muss trotzdem eine gewisse Länge haben, um noch etwas auszusagen.

    Bei Rückgabetypen finde ich es jedoch wirklich übersichtlicher - aber da trenne ich all die zusätzlichen Angaben wie virtual nicht vom eigentlichen Typen. Aber so eine ganz universelle, ideale Möglichkeit erschliesst sich mir da nicht. 🙂

    Tyrdal schrieb:

    Du bist immer noch auf dem falschen, dem Typendampfer. Un war ursprünglich nicht für Typen und hat daher auch nichts mit einem Typsystem zu tun.

    UN wird heute aber meist mit Typen in Verbindung gebracht. Wir können den Codestil, der Typen per Präfix wie C für Klassen und p für Zeiger bezeichnet, auch gerne anders nennen, die Problematik bleibt die gleiche.



  • Also ich verwende UN insofern, dass ich versuche, den Variablen sprechende Namen zu geben: Also was tut diese Variable / was enthält sie. Aber das tun doch hier die meisten.

    @Volkard: hass mich nicht, weil ich anders bin 😃



  • Das Problem bei diesem Ansatz ist, dass du extrem unflexibel bist und bei einem const std::map<bla, std::string>&-Parameter die Spalten unnötig in die Länge ziehst. Klar, typedef wäre eine Möglichkeit, aber oft lohnt sich ein typedef deswegen nicht oder muss trotzdem eine gewisse Länge haben, um noch etwas auszusagen.

    Ich weiß... ich mach es auch nur in seltenen Fällen. Scheinbar kam das so rüber, als würd ich das immer so machen 😃



  • Ich bevorzuge diesen Stil : http://www.appinf.com/download/CppCodingStyleGuide.pdf und bin ein sehr großer fan von typedef, benutze ich fast immer für jeden Container. Also mag ich auch diesen Stil, obwohl ich ihn nicht oft benutze:

    // in some class
    typedef std::map <
                          int , string
                     > TComplexInformations;
    

    Also

    <
    
     >
    

    Für jeden Container, der mehr als ein arg nimmt. Natürlich benutze ich auch fast immer typedef für die Iteratoren, d.h

    typedef TComplexInformations::const_iterator TComplexConstItr;
    
    TComplexInformations informations;
    
    void foo(..)
    {
       TComplexConstItr Itr;
       TComplexConstItr ItrEnd;
    
       Itr    = informations.begin();
       ItrEnd = informations.end();
       for (; Itr !=  ItrEnd; ++Itr )
       {
    
       }  
    
    }
    

    Also, kann ich z.B sowas nicht ausstehen:

    enum bar
    {
       longName = 5,
       longNameName = 7,
       longNameNameName = 12
    
       // Bei mir müssen die Member eines Enum immer "gleich" sein, d.h:
    
       longName         = 5,
       longNameName     = 7,
       longNameNameName = 12
    } ;
    

    @It0101

    Ich finde, dass es nicht wirklich schön aussieht mit so vielen spalten. Aber jeder wie er es am besten für sich findet.

    Gruß



  • @volkard

    zum Beispiel die x-Koordinaten von den y-Koordinaten trennt und bei xFoo=(xBar-yMal)/2; sofort weiß, daß das Unfug ist

    Ich mein das so: int numPersons => num als Präfix kennzeichnet, daß es sich um eine Anzahl(number) von Personen handelt und nicht etwa um Instanzen der Klasse Person. Ob die Anzahl jetzt ein short, int, long oder sonstwas ist ist egal.

    Anders gefragt wie heißen bei dir x und y Koordinaten, teta3F6 und retzu8x5?



  • Tyrdal schrieb:

    Ich mein das so: int numPersons => num als Präfix kennzeichnet, daß es sich um eine Anzahl(number) von Personen handelt und nicht etwa um Instanzen der Klasse Person.

    Ganz genauso meine ich das auch. Das ist die ursprüngliche UN. Und die praktiziere ich auch. Was ein Counter ist heißt irgendwie sowas wie "cnt", Anzahlen heißen "Num" oder "Anz", usw..

    Nur wird man hier scheinbar manchmal ganz bewusst falsch verstanden 😉



  • Tyrdal schrieb:

    @volkard

    zum Beispiel die x-Koordinaten von den y-Koordinaten trennt und bei xFoo=(xBar-yMal)/2; sofort weiß, daß das Unfug ist

    Ich mein das so: int numPersons => num als Präfix kennzeichnet, daß es sich um eine Anzahl(number) von Personen handelt und nicht etwa um Instanzen der Klasse Person. Ob die Anzahl jetzt ein short, int, long oder sonstwas ist ist egal.

    Ja, Typ ist weitgehend egal. Daß die Anzahl der Personen besser anzahlDerPersonen heißt, als nur personen, ist auch ganz ohne UN sonnenklar.

    Tyrdal schrieb:

    Anders gefragt wie heißen bei dir x und y Koordinaten, teta3F6 und retzu8x5?

    Nö, sie täten heißen natürlich xTheta3F6 und yRetzu8x5, wenn ich UN benutzte.


Anmelden zum Antworten