Hirdetés

Új hozzászólás Aktív témák

  • Jester01
    veterán

    Az exit tényleg durva. De ha már ott tartunk, számomra bevált az a gyakorlat, és egyébként is rengeteg konvenció azt is mondja, hogy a függvényeknek csak egyetlen returnje legyen, pont az átláthatóság miatt.

    Egyszerűbb, ha az ember felelősségekkel tervez. Egy számot ellenörző függvénynek köze sincs a teljes program futásához (jó esetben, retardált feladatokat leszámítva), így oda értelemszerűen nem kerülhet exit. Igazából az alkalmazáslogikának 99%-ának semmi köze hozzá.

    Ő "tanított", de nem programozni, hanem csak ledarálta a C nyelv alapjait. Szerencsémre az elv már korábban megvolt, Pascalban elég sokat versenyeztem, így a C nem volt nagy falat. Elővizsgával simán lenyomtam elsőre, meg általában a többi programozási tárgyat is.

    Más konvenciók meg pont azt mondják, hogy nyugodtan használj annyi returnt amennyit akarsz, az átláthatóság miatt :DDD Ugyanis adott esetben sok if/else ág lenne illetve segédváltozók és/vagy ciklus lefutás után a feltétel újratesztelése is szükséges lehet.

    int find(int needle, int* haystack, int size)
    {
    int result = -1;
    if (haystack == NULL)
    {
    fputs("haystack NULL", stderr);
    } else {
    for(int i = 0; i < size; i++)
    {
    if (haystack[i] == needle)
    {
    result = i;
    break;
    }
    }
    }
    return result;
    }

    -vagy-

    int find(int needle, int* haystack, int size)
    {
    if (haystack == NULL)
    {
    fputs("haystack NULL", stderr);
    return -1;
    }
    for(int i = 0; i < size; i++)
    {
    if (haystack[i] == needle)
    {
    return i;
    }
    }
    return -1;
    }

    Az első esetben hiába van 1 return a függvény végén, ahhoz, hogy megtudd mit ad vissza ígyis-úgyis végig kell nézni a függvényt, hogy hol lesz az a változó beállítva. Akkor meg pont ugyanolyan egyszerű a return utasításokat megkeresni. Ha pedig mondjuk két ciklus van egymásbaágyazva akkor még több macera kijutni belőlük (mivel ugye goto-t sem használunk :N )

Új hozzászólás Aktív témák