Coding Styles Horror



  • Zumindest tut dieser COde vermutlich exakt das, was er soll 😃 Heinzelmännchen-Safe 👍



  • ich tippe darauf das der code staendig refactort wurde - da ne zeile geaendert - dann da - (ah da kann gleich ein return hin) und am ende war er so

    aber echt nett an zu sehen #gg



  • dazu fällt mir zb. if(!(buf=malloc(..))) exit(1); ein... in einem C++ constructor 😞

    da hab ich lieber Heinzelmännchen.



  • DrGreenthumb schrieb:

    dazu fällt mir zb. if(!(buf=malloc(..))) exit(1); ein... in einem C++ constructor 😞

    da hab ich lieber Heinzelmännchen.

    exits in Code von Bibliotheken hab ich auch ein Paar mal gesehen. Grausam sowas...



  • zwutz schrieb:

    #ifndef RANDOMCLASS_H
    #define RANDOMCLASS_H
    
    using namespace std;
    
    class RandomClass
    {
       ...
    };
    
    #endif
    

    derartiges findet sich in einigen sehr oft verwendeten Bibliotheken unserer Software

    `
    na und? normal, wa.



  • hääääh? schrieb:

    na und? normal, wa.

    using namespace im HEADER-File.



  • char inttochar(int u)
    {
        if(u==0){return '0';}
        if(u==1){return '1';}
        if(u==2){return '2';}
        if(u==3){return '3';}
        if(u==4){return '4';}
        if(u==5){return '5';}
        if(u==6){return '6';}
        if(u==7){return '7';}
        if(u==8){return '8';}
        if(u==9){return '9';}
    }
    
    int chartoint(char v)
    {
        if(v=='0'){return 0;}
        if(v=='1'){return 1;}
        if(v=='2'){return 2;}
        if(v=='3'){return 3;}
        if(v=='4'){return 4;}
        if(v=='5'){return 5;}
        if(v=='6'){return 6;}
        if(v=='7'){return 7;}
        if(v=='8'){return 8;}
        if(v=='9'){return 9;}
    }
    

    Da hatte wohl jemand nicht viel Ahnung von der ASCII Tabelle 😃



  • Nachdenken! schrieb:

    char inttochar(int u)
    {
        if(u==0){return '0';}
        if(u==1){return '1';}
        if(u==2){return '2';}
        if(u==3){return '3';}
        if(u==4){return '4';}
        if(u==5){return '5';}
        if(u==6){return '6';}
        if(u==7){return '7';}
        if(u==8){return '8';}
        if(u==9){return '9';}
    }
    
    int chartoint(char v)
    {
        if(v=='0'){return 0;}
        if(v=='1'){return 1;}
        if(v=='2'){return 2;}
        if(v=='3'){return 3;}
        if(v=='4'){return 4;}
        if(v=='5'){return 5;}
        if(v=='6'){return 6;}
        if(v=='7'){return 7;}
        if(v=='8'){return 8;}
        if(v=='9'){return 9;}
    }
    

    Da hatte wohl jemand nicht viel Ahnung von der ASCII Tabelle 😃

    Oder er hatte Alien OS 2.0 das hat keine ASCII Tabelle.



  • Besser mieser und gehackter Code aber die Anwendung geht, als Theoretiker, die den ganzen Tag nur über Konstrukte nachdenken und letztlich nix schaffen.



  • RealistX schrieb:

    Theoretiker, die den ganzen Tag nur über Konstrukte nachdenken und letztlich nix schaffen.

    Hab ich noch nie einen gesehen.



  • Nachdenken! schrieb:

    char inttochar(int u)
    {
        if(u==0){return '0';}
        if(u==1){return '1';}
        if(u==2){return '2';}
        if(u==3){return '3';}
        if(u==4){return '4';}
        if(u==5){return '5';}
        if(u==6){return '6';}
        if(u==7){return '7';}
        if(u==8){return '8';}
        if(u==9){return '9';}
    }
    
    int chartoint(char v)
    {
        if(v=='0'){return 0;}
        if(v=='1'){return 1;}
        if(v=='2'){return 2;}
        if(v=='3'){return 3;}
        if(v=='4'){return 4;}
        if(v=='5'){return 5;}
        if(v=='6'){return 6;}
        if(v=='7'){return 7;}
        if(v=='8'){return 8;}
        if(v=='9'){return 9;}
    }
    

    Da hatte wohl jemand nicht viel Ahnung von der ASCII Tabelle 😃

    Naja, das ist die portabelste Version dieser Funktionen. Sie funktioniert auf beliebigen Architekturen die char und int unterstützen...



  • µµµµønsŧ&#83 schrieb:

    Naja, das ist die portabelste Version dieser Funktionen. Sie funktioniert auf beliebigen Architekturen die char und int unterstützen...

    Außer natürlich, es würde im Sprachstandard stehen, daß der Zeichensatz die Ziffern von 0 bos 9 aufeinandefolögfend unterzubringen hat.



  • Wäre dann ein switch/case-Konstrukt nicht immer noch vorzuziehen?



  • Switcha schrieb:

    Wäre dann ein switch/case-Konstrukt nicht immer noch vorzuziehen?

    Warum nicht einfach das?

    char inttochar(int u)
    {
    	return *("0123456789" + u);
    }
    


  • TyRoXx schrieb:

    Switcha schrieb:

    Wäre dann ein switch/case-Konstrukt nicht immer noch vorzuziehen?

    Warum nicht einfach das?

    char inttochar(int u)
    {
    	return *("0123456789" + u);
    }
    

    also

    char inttochar(int u)
    {
    	return "0123456789"[u];
    }
    

    oder

    char inttochar(int u)
    {
    	return u["0123456789"];
    }
    


  • ^^für hexziffern ist die array-methode gut, wegen der lücke zwischen '9' und 'a'.
    ansonsten natürlich: #define to_char(x) ('0'+(x))
    🙂



  • wie wärs mit:

    int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;
    //statt
    int Buchstabe[27];
    


  • Tim06TR schrieb:

    wie wärs mit:

    int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;
    //statt
    int Buchstabe[27];
    

    und dann noch das:

    int *Buchstabe[] = {&a,&b,&c,&d, ...};
    

    🙂



  • ;fricky schrieb:

    ^^für hexziffern ist die array-methode gut, wegen der lücke zwischen '9' und 'a'.
    ansonsten natürlich: #define to_char(x) ('0'+(x))
    🙂

    Oder

    return '0'+x;
    

    Habt ihr in C noch keine optimierende Compiler? Doch, die habt ihr, da bin ich ganz sicher.
    Im Übrigen war

    #define to_char(x) ('0'+(x))
    

    natürlich falsch.
    Besser wäre, wenn man schon so weit in der Geschichte zurückgehen will,

    #define to_char(x) ((char)('0'+(x)))
    


  • volkard schrieb:

    Im Übrigen war

    #define to_char(x) ('0'+(x))
    

    natürlich falsch.

    nö, das geht schon so. ein cast würde z.b. beim codewarrior-compiler das tolle feature unterdrücken, dass eine warnung kommt, bei addition zweier konstanten, deren ergebnis nicht mehr in ein char passt.
    statt cast vielleicht besser sowas:

    #define DECIMAL_DIGIT_TO_CHAR(x) ((x)>=0&&(x)<=9 ? '0'+(x) : -1)
    

    🙂


Anmelden zum Antworten