Hilfe: Programmierstil so gut?



  • @yahendrik was heißt denn das 'assert(false)'? Man könnte auch einfach ein weiteres else machen, oder?



  • @offifee Das ist nur, wenn du zum Beispiel Get_Name(BLONDE+1, 0) aufrufst und so einen Nullzeiger zurückgibst. In der Debugversion wird dann diese Assertion ausgewertet und angezeigt.
    Man kanns natürlich auch ohne diese Behauptung schreiben, mit wobs Vorschlag, die Namen direkt einzufügen, mit switch und etwas kürzer:

    typedef enum tagHairClr {BROWN, BLONDE} HairClr;
    const char* Get_Name(HairClr hair_color, unsigned int size) {
        switch(hair_color) {
            case BROWN: return "Lilly";
            case BLONDE:
                if(size<170) return "Lea";
                else return "Daria";
            default:
                return NULL;
        }
    }
    


  • @yahendrik

    Okay, alles klar 🙂 Vielen Dank, du hast mir sehr geholfen! Ich hab jetzt deine beiden Versionen leicht kombiniert:

    const char* Names[] = {"Daria", "Lea", "Lilly"};
    typedef enum tagHairClr {BROWN, BLONDE} HairClr;

    const char* Get_Name(HairClr hair_color, unsigned int size) {
    switch(hair_color) {
    case BROWN: return Names[2];
    case BLONDE:
    if(size<170) return Names[1];
    else return Names[0];
    default:
    return NULL;
    }
    }

    Also Version 2, nur mit dem Feld in dem die Namen gespeichert sind.

    Also wirklich, vielen Dank 🙂



  • Formatieren hilft der besseren Lesbarkeit:

    const char* Names[] = {"Daria", "Lea", "Lilly"};
    typedef enum tagHairClr {BROWN, BLONDE} HairClr;
    
    const char* Get_Name(HairClr hair_color, unsigned int size) 
    {
        switch(hair_color) 
        {
            case BROWN: return Names[2];
            case BLONDE:
                if(size<170) return Names[1];
                else return Names[0];
            default:
                return NULL;
        }
    }
    

  • Gesperrt

    @offifee sagte in Hilfe: Programmierstil so gut?:

    Kann mir jemand sagen, ob das so für jemanden mit Ahnung vom programmieren ansehnlich ist? Oder was verändert werden sollte?

    Zu viel Text. Besser ein Einzeiler, den auch Leute erahnen, die nur rudimentäre C-Kenntnisse haben. Ein #define mit euren Namen und Conditionals z.B....



  • Ich finds auch zu kompliziert. Aber ich muss auch sagen, die Idee hat was.
    Wenns nur um Leute ginge, die Programmieren können, hätt ich vermutlich versucht etwas "kompliziertes" zu verstecken, wo man nicht so einfach draufkommt. Aber da es ein Geschenk für euren Vater ist, find ichs eigentlich auch recht witzig zu verstehen, was da eigentlich draufsteht.



  • ☹

    • globale Variablen
    • NULL Rückgabe verlangt Extrabehandlung
    • switch/case mit return ist weit weg von "gut"


  • was kommt als nächstes? sinnloserprogrammcode, den der compiler komplett wegoptimiert?😃



  • Ich finde die Idee sehr witzig 😉

    Ich musste gerade schmunzeln über die Funktion, die das bei mir und meinen Brüdern ergeben würde... Die wäre kurz und das Ergebnis wäre mit den Funktionsparametern nie eindeutig bestimmbar 😉



  • ja die idee ansich ist witzig, aber zu die optimierungsversuche sind teilweise naja



  • @Wade1234 sagte in Hilfe: Programmierstil so gut?:

    ja die idee ansich ist witzig, aber zu die optimierungsversuche sind teilweise naja

    naja es muss halt auf ein T-Shirt passen. Da kann produktionsreife Softwarequalität nicht unbedingt der Maßstab sein 😉



  • ja aber es passt besser auf ein t-shirt, wenn man es kürzer und nach optik gestaltet, als nach funktion. und das mit den globalen variablen war halt einfach zu toll. wie wärs noch mit der fehlenden misra-c-konformität? 😀

    ps: ich würde übrigens einfach if-else ohne defines usw. schreiben, weil das sonst einfach zu lang wird.