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