Typ boolean i nadmiarowy kod

typ boolean i nadmiarowy kod obraz

W artykule przedstawię problem związany z nadmiarowym kodem źródłowym, który od czasu do czasu powstaje tam, gdzie używany jest typ logiczny boolean. Na przykładach zostanie pokazany nadmiarowy kod związany z typem boolean oraz zostanie zaprezentowane jak można poprawić taki nadmiarowy kod. Zapraszam do lektury artykułu 🙂.

Krótkie przypomnienie

Typ boolean to typ, który może przyjąć jedną z dwóch wartości: true (prawda) lub false (fałsz).

Dygresja: w różnych językach programowania bywa różnie z powyższą definicją. W niektórych językach programowania typ boolean może przyjąć np. jedną z trzech możliwych wartości (true, false, null).

Typ boolean i nadmiarowy kod w przykładach

Poniżej znajduje się pierwszy przykład zawierający warunek if:

if (isStoreOpen == true) {
    // ...
}

Przykład ten zawiera nadmiarowe porównanie isStoreOpen == true. Kod ten może być ulepszony do następującej postaci:

if (isStoreOpen) {
    // ...
}

Kolejny przykład zawiera warunek if … else:

if (!isUserLogged) {
    showErrorPage();
} else {
    showWelcomePage();
}

Możemy uprościć czytanie powyższego kodu źródłowego poprzez pozbycie się negacji oraz odpowiednie przesunięcie wywołania metod showErrorPage() oraz showWelcomePage(). W wyniku czego otrzymamy następujący kod:

if (isUserLogged) {
    showWelcomePage();
} else {
    showErrorPage();
}

Następny przykład zawiera definicję metody, w której znajduje się warunek if … else:

boolean hasUserAccess() {
    if (isUserLogged && hasUserAdminRight) {
        return true;
    } else {
        return false;
    }
}

W powyższym przykładzie warunek if … else jest nadmiarowy. Możemy się go pozbyć, w wyniku czego otrzymamy następującą metodę:

boolean hasUserAccess() {
    return isUserLogged && hasUserAdminRight;
}

Kolejny przykład zawiera definicję metody z pojedynczą instrukcją return:

boolean hasUserDiscount() {
    return expensesSum > BASIC_EXPENSES_SUM ? true : false;
}

Przykład ten zawiera nadmiarowy operator warunkowy (który składa się ze znaku pytajnika oraz dwukropka). Możemy uprościć powyższy kod źródłowy do następującej postaci:

boolean hasUserDiscount() {
    return expensesSum > BASIC_EXPENSES_SUM;
}
Podsumowanie:
  • program dokonujący operacji na typie boolean może zawierać kod nadmiarowy, którego możemy się pozbyć,
  • dzięki pozbyciu się nadmiarowego kodu źródłowego możemy uzyskać poprawę czytelności.

Dziękuję za przeczytanie artykułu 🙂.

Z typem boolean powiązane są prawa De Morgana, dzięki którym możemy poprawić czytelność kodu źródłowego. Jeżeli chcesz dowiedzieć się więcej na ten temat to zachęcam do zapoznania się z artykułem Prawa De Morgana w programowaniu dostępnym tutaj: https://konstrukcjaoprogramowania.pl/prawa-de-morgana-w-programowaniu

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *