diskusi.tech (beta) Community

loading...

Python Best Practices: EAFP

andhikayusup profile image andhikayusup Updated on ・3 min read

It is easier to ask forgiveness than it is to get permission

Robert C. Martin dalam bukunya Clean Code menyebutkan bahwa sebuah clean code itu seperti aliran bela diri. Setiap orang memiliki preferensi masing-masing dalam menulis kode. Walaupun begitu, beberapa pengembang ternama seperti Bjarne Stroustroup, Ward Cunningham, dan pengembang lain memiliki beberapa pandangan yang sama terkait clean code.

Clean code adalah praktek menulis kode dengan rapih agar bisa dibaca oleh diri sendiri dan orang lain. Kegagalan dalam menulis kode yang sulit dibaca dapat mengakibatkan produktivitas menurun dan bahkan bisa membuat sebuah perusahaan jadi bubar!

Robert C. Martin juga menyebutkan bahwa clean code tidak berbeda dengan halnya lukisan. Semua orang bisa membedakan lukisan yang bagus dan yang buruk. Namun, tahu mana lukisan yang bagus dan yang buruk tidak berarti bisa melukis yang bagus. Hal ini juga serupa dengan menulis kode.

Menulis kode yang memenuhi kaidah clean code tidak cukup sebagai pengetahuan saja. Menulis kode yang terbaca memerlukan latihan dan memperkuat code sense memerlukan waktu yang sangat lama.

Standar kode yang menggunakan bahasa Python sudah ditetapkan dalam PEP 8. PEP 8 adalah rekomendasi dari komunitas Python dalam hal gaya penulisan kode. Penerapan code style yang telah terstandardisasi ini diperlukan agar kode yang kita buat dapat menerapkan prinsip clean code yang mana dapat meningkatkan keterbacaan kode untuk kita dan orang lain yang sedang memahami kode tersebut.

Dalam melakukan pemrograman, kita tentu sering menjumpai dengan masalah error. Dalam menghadapi masalah ini, salah satu cara yang digunakan adalah penggunaan if-else untuk mencegah error sebelum terjadi. Pendekatan seperti ini sudah sangat umum dan dikenal dengan pendekatan LBYL (Look Before You Leap).

// Implicitly handle null value exception
if 'key' in dict:
    value += dict['key']
else:
    pass
Enter fullscreen mode Exit fullscreen mode

Masalah yang dapat muncul potongan kode yang muncul seperti contoh diatas adalah penyelesaian error secara implisit. Hal ini melanggar salah satu prinsip dalam "The Zen of Python" yaitu:

Explicit is better than implicit.

Salah satu pendekatan yang digunakan dalam Python dalam menangani error adalah penggunaan EAFP (Easier to Ask Forgiveness than Permission). Pendekatan ini diterapkan dalam dengan cara menggunakan try-except untuk menangkap error yang terjadi dalam blok kode try.

try:
    value += dict['key']
except TypeError:
    pass
Enter fullscreen mode Exit fullscreen mode

Secara umum, penggunaan try-except sangat mudah. Ada dua komponen dari fitur ini yang diperlukan dalam sebuah kode: blok try dan except. Selain itu, juga ada komponen else dan finally yang akan mempermudah programmer dalam mengerjakan tugasnya.

//Dasar penggunaan try-except
try:
    //potongan kode yang memiliki kemungkinan error
except TypeError:
    //Jika terjadi TypeError maka jalankan block kode ini
except ImportError:
    //Jika terjadi ImportError maka jalankan block kode ini
except:
    //Jika terjadi error lainnya maka jalankan block kode ini
else:
    //Jika tidak terjadi error maka jalankan block kode ini
finally:
    //Menjalankan block kode ini baik error atau tidak
Enter fullscreen mode Exit fullscreen mode

Perlu dipahami bahwa menurut PEP 8 menggunakan except tanpa spesifik exception yang dimaksud sangat tidak disarankan. Juga sebisa mungkin blok kode dalam try-except diminimalisasi sekecil mungkin.

Jadi, dalam usaha untuk menerapkan prinsip clean code, kita perlu menerapkan gaya code yang telah terstandardisasi oleh komunitas dalam bahasa/framework tersebut. PEP 8 adalah salah satu standar gaya kode yang dibuat resmi oleh founder Python itu sendiri. Dalam PEP 8 ini, kita dianjurkan untuk menggunakan try-except sebagai usaha untuk mengatasi error karena penggunannya akan meningkatkan keterbacaan kode itu sendiri.

Discussion

pic
Editor guide