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`.
| 1 | const statusPesanan = "SHIPPED"; |
| 2 | |
| 3 | switch (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 | } |
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.
| 1 | // ❌ BURUK: Pyramids of Doom (Deep Nesting) |
| 2 | function 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 |
| 20 | function 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 | } |
Apa manfaat utama dari menerapkan pola 'Guard Clause' (Early Return)?