Coding Styles Horror


  • Mod

    Etwas anonymisiert, aber so in etwa sah der Code aus den ich neulich gefunden habe:

    for (int i=0; i < 10000; i++)
     {
      grosses_array_mit_10000_eintraegen_A[i]=i;
     }
    for (int i=0; i < 10000; i++)
     {
      grosses_array_mit_10000_eintraegen_B[i]=i;
     }
    for (int i=0; i < 10000; i++)
     {
      grosses_array_mit_10000_eintraegen_C[i]=i;
     }
    for (int i=0; i < 10000; i++)
     {
      grosses_array_mit_10000_eintraegen_D[i]=i;
     }
    for (int i=0; i < 10000; i++)
     {
      grosses_array_mit_10000_eintraegen_E[i]=i;
     }
    for (int i=0; i < 10000; i++)
     {
      grosses_array_mit_10000_eintraegen_F[i]=i;
     }
    

    Das war übrigens innerhalb eines zeitkritischen Loops.



  • bool b = irgendWas();
    
    switch(b)
    {
       case true: doA(); break;
       case false: doB(); break;
       default: doC(); break;
    }
    


  • int a = 1;
    printf ("%d %d\n", a, a++);
    

    🙂



  • Von einem "erfahrenen" C#-Entwickler:

    object obj = reader["GUID"];  // Anmerkung: das object ist vom Type Guid
    
    Guid guid = new Guid(obj.ToString());
    


  • #include <someclass.h>
    
    short foo()
    {
      short rc = RC_GOOD; //rc fuer return code
    
      Someclass* pSc = NULL;
      if (!pSc)  //könnte ja sein dass die Heinzelmännchen da waren...
      { 
        pSc = new Someclass();
      }
      if (!pSc) //oder dass new plötzlich wieder im Jahr 1993 ist
      {
        rc = RC_FAIL; //setzen wir sicherheitshalber den returncode
        return RC_FAIL; //weil wir ihn eh nicht zurückgeben!
      }
    
      if (rc != RC_FAIL) //wie auch immer das hier RC_FAIL sein könnte
      {
        /* ... */   // arbeite mit pSc
      }
    
      return rc;
    }
    

    Und das laufend. *wein*



  • ^^...und das 'delete' fehlt auch noch.

    pumuckl schrieb:

    Und das laufend. *wein*

    von einer person?
    🙂



  • pumuckl schrieb:

    #include <someclass.h>
    
    short foo()
    {
      short rc = RC_GOOD; //rc fuer return code
    
      Someclass* pSc = NULL;
      if (!pSc)  //könnte ja sein dass die Heinzelmännchen da waren...
      { 
        pSc = new Someclass();
      }
      if (!pSc) //oder dass new plötzlich wieder im Jahr 1993 ist
      {
        rc = RC_FAIL; //setzen wir sicherheitshalber den returncode
        return RC_FAIL; //weil wir ihn eh nicht zurückgeben!
      }
    
      if (rc != RC_FAIL) //wie auch immer das hier RC_FAIL sein könnte
      {
        /* ... */   // arbeite mit pSc
      }
    
      return rc;
    }
    

    Wenn die Kommentare auchnoch so im Code wären, dann wäre es der beste Code aller Zeiten.



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


Anmelden zum Antworten