Refactoring: Beginner Trying to Refactor

Bintang Dominique
6 min readMar 2, 2022

--

Halo! Perkenalkan Saya Bintang, pada blog ini saya akan menceritakan sedikit mengenai pemahaman saya terhadap Refactoring. Selamat membaca 😀

Motivasi

Kita mungkin beranggapan bahwa kita telah berhasil dalam pengembangan proyek karena kita telah sukses membuat kode dan berfungsi dengan baik. Selain itu, kita juga merasa bahwa kinerja dari tim kita sangat baik terlihat dari kepuasan yang diperoleh oleh pengguna proyek. Saya setuju, hal tersebut memang sangat baik. Namun, bagaimana jika kita harus melakukan implementasi tambahan dari proyek kita beberapa tahun kedepan, seperti penambahan fitur baru yang dibutuhkan di masa mendatang. Tentunya hal tersebut tidaklah mudah dilakukan.

Oleh karena itu, pada artikel ini saya ingin mencoba memberikan penjelasan mengenai Refactoring yang mungkin dapat kita implementasikan untuk meningkatkan kualitas kode kita dan mempertahankan kode untuk masa mendatang.

Tentang Refactoring

Salah satu Software Developer berkebangsaan Amerika sekaligus pembuat buku mengenai refactoring mengatakan bahwa dirinya bukanlah seorang programmer yang hebat melainkan seorang programmer yang cukup baik dengan kebiasaan yang hebat.

What’s Refactoring?

Dalam bidang teknologi dan juga desain dari perangkat lunak, Refactoring merupakan suatu proses yang sistematis untuk meningkatkan kode tanpa membuat fungsionalitas baru. Singkatnya, refactoring itu terjadi ketika kita mengubah kode tetapi tidak mengubah behavior nya. Refactoring sendiri memiliki tujuan untuk meningkatkan desain, struktur, dan implementasi dari proyek perangkat lunak dengan mempertahankan fungsinya.

Salah satu ciri terpenting dari produk perangkat lunak adalah mudah untuk ditingkatkan di masa yang akan datang dan dapat dipertahankan. Untuk dapat mencapainya, pengembang akan menghabiskan banyak waktu mereka selama proses perancangan proyek perangkat lunak agar sistem dapat dipelihara. Tetapi, pengembang itu juga manusia yang cukup rentan terhadap kesalahan. Sehingga, sangatlah penting bagi kita sebagai pengembang untuk meluangkan beberapa waktu setelah mengimplementasikan desain dari perangkat lunak untuk meningkatkan sistem tersebut.

Perlunya Melakukan Refactor

Pertanyaan yang muncul dari sub judul diatas adalah kapan kita dapat mengetahui kalau kita perlu melakukan refactor? Mungkin jawaban sederhananya adalah ketika kita menemukan code smells.

Nah, Apa itu code smells? Dalam bidang ilmu komputer, code smells itu merupakan karakteristik apa pun di dalam source code dari suatu program yang mungkin menunjukkan adanya masalah.

Indikasi dari Code Smells

Berdasarkan buku Refactoring yang dituliskan oleh Martin Fowler dan penulis lainnya, terdapat beberapa bentuk yang mengindikasikan adanya code smells.

Pertama adalah ketika kita menemukan adanya duplikasi kode. Hal ini merupakan kasus ketika kita memiliki akhiran dengan potongan kode yang sama pada beberapa tempat. Hal tersebut dapat diindikasikan sebagai kode yang duplikat. Masalah ini dapat diperbaiki dengan melakukan ekstraksi kode dan mengubahnya menjadi sebuah method, lalu panggilah method tersebut dan jangan lakukan copy-paste kodenya.

Kemudian indikasi lainnya adalah ketika kita merasa adanya method yang terlalu panjang atau disebut dengan long method. Ketika kita memiliki method yang panjang dan terdiri dari banyak implicit method itu karena kita memiliki banyak proses berbeda yang diselesaikan di dalam satu method. Solusinya, kita mungkindapat menggunakan ekstraksi method untuk mengekstrak implicit method dan menjadikannya method yang lebih jelas. Sehingga nantinya method tersebut akan memiliki tujuan yang lebih jelas.

Lalu ketika kita menemukan large class. Large class sendiri melanggar Prinsip Single Responsibility Principle. Prinsip ini menyatakan bahwa setiap kelas seharusnya hanya memiliki satu alasan saja untuk berubah, yang berarti hanya memiliki satu tanggung jawab secara jelas. Dan ketika kita memiliki class yang besar, hal tersebut berarti class tersebut memiliki lebih dari satu tanggung jawab. Hal tersebut menjadi kurang tepat karena selain tidak sesuai dengan prinsip yang diberikan, hal tersebut juga membuat tujuan dari class menjadi tidak jelas. Untuk mengikuti Prinsip Single Responsibility Principle, kita dapat melakukan ekstraksi class, di mana satu class memiliki peran dari dua class, di mana class memiliki fitur yang hanya dapat digunakan dalam beberapa kasus.

Kapan kita perlu Refactor?

Berdasarkan buku refactoring, direkomendasikan agar refactoring dilakukan secara terus menerus, dalam waktu yang singkat dibandingkan menentukan waktu tertentu selama proses pengembangan hanya untuk refactoring. Ada beberapa kasus ketika kita harus melakukan refactor.

Pertama berdasarkan The Rule of Three. Terdapat juga kutipan mengenai hal tersebut.

Three strikes and you refactor.” — Martin Fowler

Hal tersebut berarti kita perlu melakukan Refactoring setelah kita menduplikasi sesuatu sebanyak dua kali. Karena ketika pertama kali kita melakukan duplikasi, hal tersebut masih dapat ditoleransi, tetapi ketika hal tersebut terulang, maka segera ditunjukan bahwa kode yang kita buat sudah diduplikasikan dan harus dilakukan Refactoring.

Apa saja The Rule of Three?

Pertama adalah ketika kita melakukan sesuatu untuk pertama kalinya, maka kita dapat menyelesaikannya saja. Kedua ketika melakukan hal yang sama untuk kedua kalinya yang telah dijelaskan sebelumnya. Kemudian, ketika kita diminta untuk melakukan hal yang sama untuk ketiga kalinya, hal ini merupakan waktu yang sangat tepat untuk melakukan Refactoring.

Kemudian kita juga dapat melakukan Refactoring ketika kita melakukan review dari kode. Dengan melakukan Refactoring nantinya akan memberikan hasil review kode yang konkret dan solusi yang diusulkan tidaklah abstrak, melainkan dapat dilihat dan diperiksa bukan dibayangkan.

Penerapan dalam Proyek

Salah satu hal yang cukup penting dilakukan di dalam pengembangan proyek perangkat lunak adalah dengan me-refactor kode yang masih kurang ‘bersih’. Refactoring ini sendiri adalah salah satu best practice sebagai software engineer dan juga developer di dalam meningkatkan kualitas dari suatu kode utamanya. Dengan refactoring kita juga dapat memperluas cakupan kode yang kita punya dan juga berguna untuk penambahan fungsionalitas yang baru. Berikut saya lampirkan bentuk dari penerapan refactoring dalam proyek perangkat lunak.

Mendaftarkan kota dalam registrasi

Ternyata penerapan dari refactoring berpengaruh langsung terhadap jalannya fitur pada proyek. Pada lampiran di atas terdapat pada saat kita ingin mendaftarkan diri dengan mengisi identitas kita. Pada saat mengisi identitas kita juga diharuskan untuk mengisi kota asal kita dengan memilih kota dari pilihan yang ada. Pada kasus diatas itu terdapat penambahan condition guna untuk memberikan pesan error pada API nantinya ketika nama kota tersebut tidak ditemukan. Hal tersebut dalam istilah refactoring dapat kita katakan sebagai refactoring conditionals.

Keuntungan dari Refactoring

Refactoring tidak memperbaiki setiap kesalahan dan kerusakan yanga ada pada perangkat lunak, tetapi dengan Refactoring pastinya membantu meningkatkan banyak aspek dari perangkat lunak. Salah satunya adalah meningkatkan desain dari sistem perangkat lunak yang seiring berjalannya waktu akan mengalami kekurangan. Sebagai tindakan preventifnya, dapat kita lakukan refactoring, untuk menjaga kode kita tetap dapat di mantain dan dalam kondisi yang baik.

Memiliki suatu perangkat lunak yang dirancang dengan buruk mungkin hanya akan baik dalam jangka yang pendek, tetapi setiap hal pasti memiliki efek jangka panjangnya yang tidak akan baik. Pada dasarnya, hal ini memberi tahu kita bahwa jika kita membuat pilihan yang kurang baik dan terkesan terburu-buru dibanding menerapkan best practice, nantinya kita akan dihantui oleh banyak kendala dan masalah 😈.

Demikian pemaparan saya mengenai Refactoring. Semoga bermanfaat!!

--

--

Bintang Dominique
0 Followers

Computer Science Graduate at University of Indonesia