[Stack Update] Exit Early
you cant expect the person who broke you into pieces to bring those pieces and say i’m gonnna put you back together
you cant do that
you can but why would you choose to do that ?
someone who has the power to destroy you and use that power
why would you trust them with rebuilding you
Apa sih Exit Early dalam pemrograman ?
Kalo untuk menghandel Callback Hell kita bisa menggunakan Delegate, Promise, Functional (Declarative) sebagai replacement.
Tapi apa itu Exit Early ? sebenanya secara konsep masih sama dengan Callback Hell problem ketika kita menggunakan nested if yang terlalu dalam. Contoh:
if (a) {
if (b) {
if (c) {
if (d) {
// dan seterusnya
}
}
}
}
Yang membedakan senior dan junior sebenanya cuma cara penggunaan tools atau alat yang diberikan. Banyak kok fresh graduate programmer yang pinter bahkan lebih pinter dari programmer lama dan kadang bisa mencapai senior dengan waktu yang cepat.
Senior programmer sekarang bukan ditentukan dengan lama kerja, banyak faktor yang bisa dijadikan acuan, entah itu problem solving nya, cara komunikasi, dan bagaimana mereka bisa menghandle manusia.
Oke kembali ke topik …jadi bagaimana solusi nested if tersebut ?
Konsep Exit Early ini sebenarnya saya kenal pertama kali di bahasa Swift yaitu dengan guard let.
Dengan guard let kita bisa solve nested if ini. Contohnya sebagai berikut
guard a else {
// Call error function
return
}
guard b else {
// Call error function
return
}
guard c else {
// Call error function
return
}
guard d else {
// Call error function
return
}
Jadi gimana kalau dibahasa lain ? sebenarnya sama saja kita tetap bisa menggunakan if statement kok.
if !a {
// return or call error
}
if !b {
// return or call error
}
if !c {
// return or call error
}
if !d {
// return or call error
}
Contoh Penggunaan di real case
func fetchList() -> [String] {
if isReachable{
if isConnected{
return fetch()
} else {
return []
}
} else {
return []
}
}
func fetchList() -> [String] {
guard isReachable else { return [] } // Ketika tidak reachable return empty Array
guard isConnected else { return [] } // Ketika tidak connected return empty Array
return fetch()
}
What Next ?
Jadi sebisa mungkin hindari nested code karena maintenance nya agak njelimet kalau sudah banyak dan more cleaner buat dibaca. Semoga bisa membantu !!