Historia pytania
Operator If...Else to podstawowe narzędzie sterujące, obecne we wszystkich wersjach Visual Basic, począwszy od pierwszego wydania. Jego rozwój przeszedł od prostego liniowego rozgałęzienia do rozwiniętej składni z obsługą ElseIf, End If, wyrażeń logicznych o dowolnej złożoności.
Problem
Wielu popełnia błędy z powodu niewłaściwego formatowania lub zagnieżdżania warunków, niepoprawnie używa ElseIf, co utrudnia czytelność i wiąże się z trudnymi do uchwycenia błędami logicznymi. Początkowo często mylą When i ElseIf, a także popełniają błąd, powtarzając logikę.
Rozwiązanie
Używaj If...ElseIf...Else...End If do czytelnego budowania zagnieżdżonych warunków. Zawsze grupuj odpowiednie warunki, unikaj powtarzających się sprawdzeń i zbędnych konstrukcji. Dla złożonych warunków lepiej używać operatorów logicznych (AndAlso, OrElse).
Przykład kodu:
Dim age As Integer = 22 If age < 18 Then Console.WriteLine("Nieletni") ElseIf age < 65 Then Console.WriteLine("Dorosły") Else Console.WriteLine("Senior") End If
Kluczowe cechy:
ElseIf poprawia czytelność.Co się stanie, jeśli nie użyjesz End If w wielowarstwowych konstrukcjach If?
Błąd kompilacji. Wszystkie wielowarstwowe konstrukcje wymagają End If. Ulepszenia pojawiły się z wprowadzeniem jednoliniowego If, na przykład:
If x > 0 Then y = 1 Else y = -1
Czy ElseIf może mieć własny Else?
Nie. Można użyć jednego Else w łańcuchu warunków, odnosi się on do całego bloku If. Na przykład:
If x = 1 Then ... ElseIf x = 2 Then ... Else ... End If
Czym różni się operator Or od OrElse?
Or zawsze oblicza oba warunki, podczas gdy OrElse — tylko w razie potrzeby (jeśli pierwszy jest fałszywy). Użyj OrElse dla skrócenia.
Wielopoziomowe zagnieżdżenie If, gdzie każdy warunek nie jest zaopatrzony w Else, i brakuje wystarczającej dokumentacji, prowadzi do błędów przy dodawaniu nowych gałęzi.
Plusy:
Minusy:
Używanie czytelnych ElseIf z wyjaśnieniami, łączenie bliskich warunków, zakończanie wszystkich gałęzi.
Plusy:
Minusy: