KuloDev
1 Hari
0 XP
intermediate15 menitModul: 02-control-flow-logic

Switch-Case & Guard Clauses

Menyederhanakan percabangan dengan banyak nilai diskrit dan menulis kode bersih tanpa nesting bertingkat (early return).

1. Kapan Menggunakan Switch Case?

Ketika kamu memiliki satu variabel dan ingin mencocokkannya dengan banyak kemungkinan nilai spesifik (seperti pilihan menu, role user, atau status pesanan), `switch-case` seringkali jauh lebih rapi dan terbaca daripada menulis belasan rantai `if-else if`.

Contoh Penanganan Status Pesanan
1const statusPesanan = "SHIPPED";
2
3switch (statusPesanan) {
4 case "PENDING":
5 console.log("Menunggu pembayaran pelanggan");
6 break;
7 case "PROCESSING":
8 console.log("Pesanan sedang dikemas di gudang");
9 break;
10 case "SHIPPED":
11 console.log("Paket sedang dalam perjalanan bersama kurir");
12 break;
13 case "DELIVERED":
14 console.log("Pesanan telah diterima oleh pembeli");
15 break;
16 default:
17 console.log("Status pesanan tidak dikenali");
18}
Bahaya Lupa Menulis 'break'
Di JavaScript, C, dan Java, jika kamu lupa menulis kata kunci `break;` di akhir case, eksekusi akan terus meluncur ke case di bawahnya (dikenal sebagai fall-through bug).

2. Pola Guard Clauses (Early Return)

Salah satu tanda kode pemula adalah bersarangnya if-else hingga 4-5 tingkat ke dalam (Arrow Anti-Pattern). Pola Guard Clause membalik logika: periksa kondisi error/gagal terlebih dahulu, lalu langsung keluar dari fungsi (return early), sehingga alur utama tetap berada di indentasi paling kiri.

Sebelum vs Sesudah Guard Clause
javascript
1// ❌ BURUK: Pyramids of Doom (Deep Nesting)
2function prosesPembayaran(user, item) {
3 if (user != null) {
4 if (user.isActive) {
5 if (user.saldo >= item.harga) {
6 user.saldo -= item.harga;
7 return "Sukses";
8 } else {
9 return "Saldo kurang";
10 }
11 } else {
12 return "Akun tidak aktif";
13 }
14 } else {
15 return "User tidak ditemukan";
16 }
17}
18
19// ✅ BERSIH: Menggunakan Guard Clause
20function prosesPembayaranBersih(user, item) {
21 if (!user) return "User tidak ditemukan";
22 if (!user.isActive) return "Akun tidak aktif";
23 if (user.saldo < item.harga) return "Saldo kurang";
24
25 // Happy path alur utama tanpa indentasi berlebih
26 user.saldo -= item.harga;
27 return "Sukses";
28}
Kuis Pemahaman
+10 XP

Apa manfaat utama dari menerapkan pola 'Guard Clause' (Early Return)?

Selesaikan Materi Ini?

Dapatkan +25 XP dan simpan progres belajarmu.