Clean Code: It’s Really the Easier Way

Sumber:
This article was written as an Individual Review assignment for PPL Computer Science Universitas Indonesia 2021

Intermezzo

Kilas balik disaat saya masih sangat baru belajar mengenai dunia software engineering, saya sering kali mendapatkan kebingungan disaat bekerja di dalam tim dalam pembuatan sebuah aplikasi berbasis web ataupun mobile. Disaat kita sendiri membuat aplikasi mungkin menjadi masalah mengenai kode karena semuanya kita yang membuatnya dari awal, tetapi kedepannya hampir tidak pernah lagi kita akan membuat sebuah aplikasi secara sendiri, mau tidak mau, suka tidak suka pasti kita akan bekerja sama dengan banyak orang dalam pembuatan aplikasi.

Masalah yang sering saya temui, terutama saat bekerja sama dengan teman — teman saya yang juga sama seperti saya masih belajar dalam dunia pemrograman adalahKita menulis barisan kode tanpa ada format atau aturan yang kita gunakan, kita membuat dengan gaya kita masing — masing. Bayangkan ketika membuat kode dengan jumlah tim yang sangat banyak, dengan cara seperti itu seberapa ribet dan memakan waktu kita dalam proses pembuatan kode. Istilah penulisan bebas seperti itu biasanya disebut dengan nama dirty code. Saya sering kali memiliki kesusahan untuk memahami kode anggota tim lain, sehingga memakan waktu untuk selalu bertanya apakah maksud kode ini, kode itu sehingga kita sangatlah tidak efisien dalam software development, sangat tidak disarankan.

source:

Itulah masalah yang sangat mengganggu saya sebelum saya mengenal yaitu:

Clean Code

Clean Code menjadi penyelamat saya dan rekan — rekan saya, karena hal ini, kami jadi bisa lebih efisien lagi dalam pengembangan suatu aplikasi sehingga produktivitas kami masing — masing jadi meningkat juga.

WHY WE MUST USE CLEAN CODE?

Kode yang ditulis dengan buruk mungkin lebih cepat dalam jangka pendek, tetapi dalam beberapa bulan, Anda akan senang telah melakukan investasi pada clean code. Jika Anda telah meluangkan waktu dan tenaga untuk merancang kode Anda, menambahkan fitur baru, memperbaiki bug, dan berkolaborasi dengan pengembang lain akan jauh lebih mudah.

Bekerja dalam tim adalah hal yang luar biasa. Anda bisa berbagi pengetahuan dan minat dengan orang lain dan selalu ada banyak pembelajaran yang terlibat. Tetapi ketika datang ke kode kita semua memiliki cara kita sendiri dan kita mungkin mendekati masalah secara berbeda. Clean kode memudahkan rekan kerja Anda untuk memahami pendekatan Anda.

sumber:

Setelah Anda mendekati solusi dengan mengabaikan implementasi clean code dan hanya membuang apa pun yang berfungsi, tidak ada jalan untuk mundur tanpa memfaktorkan ulang seluruh kode. Anda mungkin harus membiarkannya di sana untuk melanjutkan ke fitur berikutnya dan menghindari penundaan, tentu saja.

Clean code tidak hanya berharga untuk tim Anda, tetapi juga untuk masa depan Anda! Mungkin Anda yang harus memodifikasi atau memperbaiki beberapa fitur lama yang Anda kembangkan sendiri. Dan percayalah, Anda akan sama-sama (atau bahkan lebih) senang memiliki kode yang bagus dan mudah dipahami yang ditulis sendiri untuk dikerjakan.

WHAT IS CLEAN CODE

Clean code bersifat subjektif dan setiap pengembang memiliki pandangan pribadi tentangnya. Ada beberapa ide yang dianggap sebagai praktik terbaik dan yang merupakan clean code dalam industri dan komunitas, tetapi tidak ada perbedaan yang pasti. Dan saya rasa tidak akan pernah ada. Secara umum inti dari clean code adalah:

kode yang mudah dimengerti dan mudah diubah
Gary Woodfine

Tujuan utama dari clean code yaitu seperti disebutkan diatas, membuat code yang mudah dipahami oleh orang lain sehingga mereka bisa melakukan modifikasi code itu lebih mudah, satu hal yang perlu ditekankan adalah: kita membuat code bukan hanya untuk diri kita sendiri. Untuk menjelaskan lebih detail, saya akan menjelaskan apa itu clean code dan kenapa itu “worth it” untuk dilakukan dalam bentuk poin — poin sehingga pengetahuan kita mengenai clean code lebih mendalam, yaitu:

Rekan kerja kita akan berterima kasih kepada kita

Secara real-work experiences, kita pasti selalu akan bekerja dalam format tim dalam pengembangan suatu aplikasi. Dari hal inilah kita harus mementingkan orang lain juga dalam tiap pekerjaan yang kita lakukan. Sebagai developer, kita harus membuat barisan code yang jelas dan dengna mudah dipahami oleh rekan kerja kita. Mereka akan berterima kasih kepada kita kalau kita bisa mengimplementasikan clean code.

sumber:

Hal simple seperti penamaan variabel, nama function yang kurang menjelaskan fungsinya, class dan method yang terlalu kompleks dan lain — lain, akan menyusahkan rekan kerja kita untuk bekerja sama dengan kita. Kita harus selalu menekankan poin ini dari awal.

“Messy code tends to get messier”

Bisa dibaca melalui judul diatas, bahwa sekali kita membuat solusi yang menghindari clean code practices dan membuat apa saja (yang penting berhasil), tidak ada kata kembali tanpa melalukan refactoring seluruh barisan codenya. Kita akan meninggalkannya disana dan menunda fitur selanjutnya dan bisa menunda pekerjaan seluruh tim. Kita harus dari awal mempunyai prinsip dalam setiap pekerjaan barisan code yang kita buat mengimplementasi clean code, beberapa poin implementasinya adalah sebagai berikut:

  • Menggunakan penamaan yang bermanfaat (ada tujuannya/menjelaskan)

Ini merupakan hal awal yang sangat penting, dimana penamaan atas tiap variabel, class, method, dan lain-lainnya kita harus menyediakan informasi yang jelas akan tujuan dari hal tersebut akan digunakan untuk apa, contohnya seperti yang sebelumnya telah diperlihatkan.

sumber:
  • Memotong comment yang tidak berguna
sumber:

Good practicesnya adalah dengan membuat comment yang sangat perlu dibuat, seperti menjelaskan suatu business logic yang kompleks. Clean code harus bisa self-documenting, jadi sebisa mungkin mudah dimengerti tanpa perlu dibuat comment.

  • Function hanya melalukan satu tugas seminimal mungkin (responsibility)
sumber: proyek PPL Vamos

Tidaklah sulit untuk membuat suatu fungsi mudah untuk dibaca — membiarkannya melakukan lebih dari satu hal sudah cukup untuk mencapainya. Jika fungsi perlu menyelesaikan tugas A, lalu tugas B dan kemudian menggunakan hasil sebelumnya untuk melakukan tugas C, maka Anda cukup mengekstrak tiga function berbeda darinya! Memiliki function kecil dan sederhana sangat baik dan memastikan bahwa kode dapat maintainable dan refactorable.

  • Menghapus duplicated code
sumber:

Sebagian besar duplikasi membuat kode lebih sulit untuk maintain dan dikerjakan. Di sisi lain, bisa ada situasi, ketika duplikasi adalah solusi yang dapat diterima karena akan lebih mudah untuk maintain. Anda atau pengembang Anda harus memutuskan, apa yang akan menjadi solusi yang lebih baik dalam proyek — menduplikasi satu baris kode atau membuat instance kelas baru / membuat komponen baru. Duplikasi code bisa meningkatkan cognitive load dan memperlambat progress tim.

Faster decision making dan team progress

Disaat kita mengimplementasi clean code, maka kita akan lebih cepat untuk membuat sebuah keputusan, kenapa? karena clean code didasarkan oleh standard and conventions yang menjelaskan hal — hal yang tidak perlu lagi kamu jelaskan.

Dengan mengimplementasi clean code kita bisa dengan mudah untuk mempercepat progress pekerjaan aplikasi sebagai tim, karena salah satu implementasi clean code adalah yaitu harus lulus semua test.

sumber: proyek PPL Vamos

Dengan mengimplementasi TDD, yaitu membuat test terlebih dahulu baru membuat kodenya akan mempercepat pekerjaan tim karena kita sudah menganalisa errornya terlebih dahulu, sehingga kita mencapai clean code.

HOW to Implement CLEAN CODE

Setelah kita mengetahui apa itu clean code, sekarang saya akan memberikan contoh bagaimana kita mengimplementasikannya. Disini saya akan memberikan contoh implementasi clean code pada projek PPL saya yang menggunakan Flutter.

Disini saya membuat penamaan class yang jelas dengan maksudnya yaitu untuk melakukan validasi, dan tiap functionnya lebih spesifik lagi untuk validasi sesuai konteksnya

Untuk spesifik functionnya juga saya memberikan fungsionalitas yang jelas sesuai dengan outputnya, sehingga untuk orang lain yang membacanya juga akan mudah mengerti apakah tujuan dan output dari function ini.

Untuk tiap kondisi fungsi saya memberikan kondisi function yang sesuai dan jelas outputnya, dari kondisi function pertama sampai terakhir.

Saya juga mengimplementasikan TDD, dimana untuk tiap casenya sudah ditentukan dahulu untuk menghindari error dengan penamaan test yang spesifik dan sesuai dengan output yang diminta sebagai bagian dari clean code.

Salah satu kelebihan flutter juga adalah secara otomatis akan membuat bentuk barisan code seperti hirarki, bisa dilihat diatas bahwa ini adalah barisan code untuk pembuatan navbar yang ada hirarki disertai dengan garis ke akar dan cabangnya, yang bisa menghindari duplikasi code. Flutter juga secara default akan membuat comment sesuai dengan barisan code yang dibuat, sehingga lebih mudah bagi developer untuk mengimplementasi clean code.

Oke sekian dari implementasi clean code di proyek PPL kelompok saya!

Clean Code have General Principles

Clean code tidak bergantung pada aturan khusus bahasa pemrograman. Namun, itu bergantung pada prinsip-prinsip bahasa-agnostik yang disepakati oleh komunitas developer.

  • KISS: Keep It Simple Stupid. Prinsip desain yang berasal dari Angkatan Laut A.S. yang sudah ada sejak tahun 1960. Ini menyatakan bahwa kebanyakan sistem harus dibuat sesederhana mungkin
  • DRY: Don’t Repeat Yourself. Berhubungan erat dengan KISS dan filosofi desain minimalis. Ini menyatakan bahwa setiap bagian dari pengetahuan (kode, dalam hal ini) harus memiliki representasi tunggal yang tidak ambigu dan otoritatif dalam suatu sistem (basis kode).
  • YAGNI: You Aren’t Gonna Need It. Seorang developer tidak boleh menambahkan fungsionalitas kecuali jika dianggap perlu. YAGNI adalah bagian dari metodologi Extreme Programming (XP), yang ingin meningkatkan kualitas software dan meningkatkan responsiveness terhadap customer requirements.
  • Composition over inheritance: Ini adalah prinsip di mana Anda mendesain tipe Anda di atas apa yang mereka lakukan walaupun apa adanya. Composition lebih disukai daripada inheritance oleh banyak developer, karena inheritance memaksa Anda untuk membangun taksonomi objek di awal proyek,
  • Favor readability: Ini bukan karena mesin dapat membaca kode Anda sehingga orang lain dapat membaca. Terutama saat bekerja dengan banyak orang dalam sebuah proyek, selalu dukung readability daripada conciseness. Tidak ada gunanya memiliki kode yang concise jika orang tidak memahaminya.
  • Practice consistency: Ini bisa dibilang prinsip menyeluruh dari semua prinsip clean code. Jika Anda memutuskan untuk melakukan sesuatu dengan cara tertentu, patuhi itu di sepanjang proyek.

That’s all! Thanks for your time in reading this article!

To connect with me, you can connect with my

REFERENCES

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Muhammad Iqbal Wijonarko

Muhammad Iqbal Wijonarko

More from Medium

It’s okay not to have side projects

Design Patterns — 3

Functional Programming Basics — Pragra

So, You Know How To Test, Why Not Learn To Code?