Boolean Mantığı: Programlar Nasıl Karar Verir?
AND, OR, NOT, doğruluk tabloları, kısa devre değerlendirme ve koşul tasarımını gerçek bir yetkilendirme problemiyle öğrenin.
Bir kullanıcının ödeme iadesi yapabilmesi için oturum açmış, yetkili ve hesabı aktif olması gerekiyor. Bu iş kuralını doğru ifade edemezsek güvenlik açığı veya gereksiz erişim engeli oluştururuz. Boolean mantığı, koşulları kesin biçimde modellememizi sağlar.
Temel operatörler
Boolean değer yalnızca true veya false olabilir.
- AND (
&&): Bütün koşullar doğruysa doğrudur. - OR (
||): Koşullardan en az biri doğruysa doğrudur. - NOT (
!): Değeri tersine çevirir.
const canRefund = isAuthenticated && hasRefundPermission && !isSuspended;
isAuthenticated kimliğin doğrulandığını, hasRefundPermission gerekli yetkinin bulunduğunu, !isSuspended ise hesabın askıda olmadığını ifade eder. Ara sonucu canRefund adıyla saklamak koşulun niyetini görünür kılar.
Doğruluk tablosu neden işe yarar?
İki koşullu AND yalnızca true/true durumunda doğrudur. OR ise yalnızca false/false durumunda yanlıştır. Karmaşık bir yetki kuralını test ederken olası girişlerin tablosunu çıkarmak unutulan durumu ortaya çıkarır.
Kısa devre değerlendirme
A && B ifadesinde A yanlışsa B değerlendirilmez; sonuç zaten yanlıştır. Bu davranış güvenli erişim için kullanılabilir:
const city = user && user.address && user.address.city;
Modern JavaScript’te aynı niyet user?.address?.city ile daha açık yazılır. Kısa devreyi yalnızca kısalık için yan etkili fonksiyonlarla kullanmak okunabilirliği azaltır.
De Morgan kuralları
!(A && B), !A || !B ile eşdeğerdir. “Kullanıcı hem aktif hem yetkili değilse reddet” koşulu, “aktif değilse veya yetkili değilse reddet” şeklinde sadeleştirilebilir. Bu dönüşüm özellikle negatif koşulları test ederken faydalıdır.
Alternatif: karar tablosu
Üç-dört koşuldan sonra iç içe if blokları zor okunur. Sonuçlar giriş kombinasyonlarına bağlıysa karar tablosu; çok sayıda durum ve geçiş varsa state machine daha iyi olabilir. Amaç en akıllı tek satırı değil, yanlış anlaşılması en zor kuralı yazmaktır.
Kontrol listesi
- Koşulu iş alanını anlatan bir değişkene isimlendirin.
- Olumlu ifadeleri tercih edin; çift negatiften kaçının.
- Her sınır kombinasyonunu test edin.
- Yetkilendirmeyi yalnızca arayüzde değil sunucuda da uygulayın.