If… else?

Dziś będzie trochę o podstawach programowania, a konkretnie o instrukcji warunkowej “if” (“jeżeli”). W różnych językach programowania może się nieco różnić, jednak przeważnie wygląda dość podobnie i prawie wszędzie mamy również możliwość dodania “else” (“w przeciwnym wypadku”), np.:

if (a < 0)
{
    print("a jest mniejsze od zera")
}
else
{
    print("a jest większe lub równe zero")
}

O czym nie każdy początkujący programista wie (ja sam dowiedziałem się o tym stosunkowo niedawno) chyba każdy warunek można napisać NIE używając żadnego else.

Ale jak to?
Jeśli mamy funkcję/metodę sprawdzającą naszą zmienną liczbową “a”:

bool CzyMniejszeOdZera(int a)
{
    if (a < 0)
    {
        return True
    }
    else
    {
        return False
    }
}

to z powodzeniem możemy ją napisać również tak:

bool CzyMniejszeOdZera(int a)
{
    if (a < 0)
    {
        return True
    }

    return False
}

Jeżeli warunek w if’ie będzie spełniony, to zwrócimy “True” i wyjdziemy z funkcji. W przeciwnym wypadku nie wejdziemy do if’a i zwrócimy “False”.
Voila! – udało się bez else 🙂

Pozbycie się możliwie dużej ilości else’ów jest dobrą praktyką pisania kodu. Przeciwskazane jest to jedynie, gdy konstrukcja bez else’ów byłaby nieintuicyjna/trudniejsza w zrozumieniu/mniej czytelna.
Zabieg taki często pozwala pozbyć się wielokrotnych zagnieżdżeń, np.:

bool CzyKtorasMniejszaOdZera(int a, int b)
{
    if (a < 0)
    {
        print("a jest mniejsze od zera")
        return True
    }
    else
    {
        if (b < 0)
        {
            print("b jest mniejsze od zera")
            return True
        }
        else
        {
            print("żadna nie jest mniejsza od zera")
            return False
        }
    }
}

można zapisać tak:

bool CzyKtorasMniejszaOdZera(int a, int b)
{
    if (a < 0)
    {
        print("a jest mniejsze od zera")
        return True
    }

    if (b < 0)
    {
        print("b jest mniejsze od zera")
        return True
    }

    print("żadna nie jest mniejsza od zera")
    return False
}

eliminując w ten sposób drugi poziom zagnieżdżenia instrukcji.
Poznał jeden prosty trick – wszystkie else’y go nienawidzą! ;P

Jeżeli ten krótki wpis był dla Ciebie pomocny lub jeżeli masz inne zdanie na temat else albo może znasz jakieś wyjątki od tej reguły – daj znać w komentarzu.
Pozdrawiam,

dotcat

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s