Mengenal Refactoring Dalam Software Development

Source: me.me

Kualitas aplikasi tidak ditentukan seberapa lama aplikasi tersebut dibuat, jumlah anggota team, bahasa pemograman yang digunakan tetapi bagaimana aplikasi tersebut berguna dalam waktu jangka panjang sesuai dengan kebutuhan pengguna.

Ada yang bisa memastikan aplikasi yang dibuat dalam jangka waktu 6–12 bulan, kemudian 1–5 tahun kedepan masih relevan dengan situasi atau kebutuhan pengguna? Jawabannya mungkin jika di awal sudah ditulis/dianalis semua kebutuhan dari pengguna namun kecil kemungkinan saat aplikasi pertama kali di pasarkan tidak ada perubahan apalagi tujuan aplikasi yang dibuat di awal digunakan oleh 1.000 pengguna, kemudian 1 bulan ke depan 10.000 pengguna dan selanjutnya 100.000 bahkan bisa 1 juta pengguna. Seiring pertumbuhan pengguna yang signifikan aplikasi yang dibuat di awal perlu penyesuaian baik dari fitur/sistem agar pengguna puas dalam menggunakan aplikasi tersebut.

Sebagai contoh aplikasi internal menggunakan API (application programming interface) untuk fungsi create order, kemudian setelah berjalan ditemukan proses create order terlalu lama dan itu dipicu oleh permintaan HTTP yang banyak, sehingga pengguna tidak dapat menggunakan aplikasi karena menunggu waktu response yang terlalu lama dan juga bisa salah satu service down sehingga permintaan data tidak dapat diproses dan harus retry manual, kemudian setelah di analisa dibutuhkan refactoring algoritma atau proses dari client ke Rest API menjadi client -> message broker (publish -> subscribe) -> Rest API. Software message broker bisa menggunakan Google Cloud Pub/Sub, Nats Streaming, Apache Kafka, RabbitMQ dan lain sebagainya.

Itu salah satu contoh dari banyak alasan kenapa refactoring dibutuhkan dalam menjaga kualitas aplikasi sesuai dengan kebutuhan pengguna.

Source: https://premaseem.wordpress.com

Apa itu Refactoring?

Menurut Martin Fowler, refactoring adalah teknik untuk melakukan perubahan dari kode program yang sudah ada dengan merubah algoritma tanpa mengubah prilaku proses bisnis. Perubahan yang terjadi tidak dirasakan oleh pengguna tetapi ada di balik layar atau back-end proses.

Refactoring menimbulkan resiko, perubahan yang terjadi pada kode program bisa menimbulkan masalah baru atau bugs jika tidak dilakukan dengan bener dan dapat membuat menghabiskan waktu berhari-hari, bahkan sampai sebulan. Refactoring lebih beresiko ketika dijalankan secara tidak teratur atau sistematis. Mulai menggali informasi algoritma atau fungsi program, dan kemudian menemukan kesempatan untuk melakukan refactoring serta semakin dalam mencoba menggali informasi, semakin banyak perubahan yang dilakukan. Akhirnya masuk ke lubang yang dalam dan tidak bisa keluar dari lubang tersebut.

“If someone says their code was broken for a couple of days while they are refactoring, you can be pretty sure they were not refactoring”. ~ Martin Fowler, Refactoring: Improving the Design of Existing Code

Source: https://wdrfree.com/

Untuk menghindari menggali kubur sendiri, refactoring harus dilakukan secara sistematis. Bisa dimulai mengidentifikasi masalah, impact dari masalah atau tujuan dari perubahan kode program, waktu yang dibutuhkan, mitigasi jika perubahan tidak sesuai dengan rencana, sumber daya manusia dan lain sebagainya.

Software engineer perlu menambahkan fitur baru ke kode program, dan melihat kode yang ada sebelumnya apakah kode program tersebut sudah terstruktur dengan baik?, jika sudah bisa langsung ditambahkan fitur baru. Jika tidak, maka software engineer harus melakukan refactoring pada kode program agar mempermudah untuk menambahkan fitur baru. Dengan melakukan refactoring terlebih dahulu software engineer bisa lebih cepat menambahkan fitur baru dibandingkan tidak melakukan refactoring. Refactoring adalah bagian kerja sehari-hari dari software engineer. Refactoring bukanlah tugas khusus yang akan muncul dalam software development.

Mengapa Refactoring Diperlukan?

Menurut Martin Fowler dalam buku “Refactoring: Improving the Design of Existing Code” terdapat beberapa alasan seperti berikut:

Refactoring Meningkatkan Desain Perangkat Lunak
Refactoring menjaga desain arsitektur perangkat lunak menjadi tidak usang. Ketika software engineer mengubah kode untuk tujuan jangka pendek, seringkali tanpa memikirkan tentang arsitektur dan mengakibatkan kode program tidak terstruktur sehingga menjadi lebih sulit bagi software engineer untuk melihat desain dengan membaca kode.

Kode program yang “buruk” sekalipun dapat berfungsi. Tetapi jika kode program tidak bersih, bisa membuat tim pengembang menyerah atau bertekuk lutut. Setiap tahun, banyak waktu dan sumber daya yang signifikan dihabiskan karena kode program yang ditulis tidak bagus. Aspek penting untuk meningkatkan desain adalah menghilangkan kode yang duplicate. Semakin banyak kode yang ada, semakin sulit untuk dimodifikasi dengan benar.

Refactoring Membuat Perangkat Lunak Lebih Mudah Dipahami
Algoritma yang dibuat merupakan percakapan dengan komputer. Software engineer memberi tahu komputer apa yang harus dilakukan, dan komputer merespons dengan melakukan persis apa yang diperintahkan. Algoritma yang dibuat digunakan sebagai media yang ingin dilakukan komputer sesuai dengan arahan yang dibuat software engineer.

Dalam membuat kode program software engineer tidak bekerja sendirian melainkan kerja sama tim dan tim yang lain melanjutkan program sebelumnya dan melakukan beberapa perubahan. Siapa yang peduli jika komputer menjalankan fungsi yang berbelok-belok dalam menjalankan suatu fitur? Tidak masalah software engineer membutuhkan waktu seminggu untuk melakukan refactoring dan akhirnya dari refactoring tersebut para software engineer butuh waktu satu jam dalam memahaminya.

Refactoring Membantu Software Engineer Menemukan Kekutu (Bugs)
Cara yang mudah dalam menemukan bugs adalah dengan cara melakukan refactoring secara mendalam dengan memahami kode program tersebut, ada juga software engineer dengan melihat sekumpulan kode bisa langsung menerawang akan menimbulkan bugs suatu saat nanti.

Kent Beck membuat pernyataan tentang dirinya sendiri: “Saya bukan programmer yang hebat; Saya hanya seorang programmer yang baik dengan kebiasaan yang hebat.” Refactoring membantu saya menjadi jauh lebih efektif dalam menulis kode yang baik.

Refactoring Membantu Software Engineer Memprogram Lebih Cepat
Refactoring membantu software engineer dalam mengembangkan fitur pada kode program yang sudah ada dengan lebih cepat. Aplikasi dengan arsitektur yang baik memungkinkan software engineer dengan mudah menemukan bagaimana dan di mana yang perlu melakukan perubahan untuk menambahkan fitur baru. Sistem modul yang baik memungkinkan software engineer hanya perlu memahami sebagian kecil dari kode program untuk membuat perubahan. Jika kodenya jelas, software engineer cenderung tidak menimbulkan bugs baru dan bisa diselesaikan dengan baik serta efisien.

Mengapa Refactoring dilakukan jika kode program berfungsi dengan baik?

Tujuan utama dari refactoring adalah untuk membuat kode program lebih mudah dipelihara di masa depan dan untuk melengkapi program yang dibuat dengan ala kadar (berfungsi sebagian besar) atau technical debt. Selain itu tujuan dari refactoring bukan untuk menambah fungsionalitas baru atau menghapus program yang sudah ada, melainkan untuk memperbaiki desain yang pertama kali dibuat, agak sulit arsitektur di awal benar-benar sempurna.

Kapan Harus Melakukan Refactoring?

Seperti paragraf sebelumnya waktu terbaik software engineer melakukan refactoring adalah sebelum menambahkan fitur baru pada kode program yang sudah ada. Dengan melakukan refactoring terlebih dahulu software engineer bisa lebih cepat menambahkan fitur baru dan memudahkan software engineer untuk melakukan perubahan kedepannya dibandingkan tidak melakukan refactoring.

Waktu lain yang tepat untuk melakukan refactoring adalah ketika aplikasi sudah digunakan oleh pengguna. Ini sebenarnya waktu yang tepat untuk melakukan sedikit perubahan meskipun terdengar konyol, setelah meluncurkan produk yang telah dikerjakan selama berbulan-bulan, bahkan mungkin bertahun-tahun, dan sekarang harus kembali ke awal? Pada waktu ini software engineer kemungkinan memiliki lebih banyak waktu untuk mengerjakan refactoring sebelum melanjutkan ke pekerjaan berikutnya.

Bagaimana mengetahui kapan saatnya untuk melakukan refactoring?

Menurut artikel yang ditulis oleh Johnny Dunn di shortcut.com, terdapat 4 cara untuk mengetahui kapan waktu yang tepat untuk melakukan refactoring:

    1. Ditemukannya logika program yang dibuat berulang kali atau mendeklarasikan struktur kode yang sama berulang kali.
    2. Beberapa software engineer mengalami masalah pada suatu function atau class dalam menulis fitur program.
    3. Menghabiskan waktu yang lama saat mengidentifikasi bug atau error dari pada membuat program itu sendiri.
    4. Tidak selamanya sistem yang pertama kali dibuat sesuai dengan kebutuhan pengguna atau stabil seiring dengan pertambahan pengguna.

When you have to add a feature to a program but the code is not structured in a convenient way, first refactor the program to make it easy to add the feature, then add the feature.
~ Martin Fowler, Refactoring: Improving the Design of Existing Code

Dalam melakukan refactoring, penting untuk menanyakan hal berikut kepada tim:

  • Fitur apa saja yang harus menjadi prioritas utama dalam refactoring
  • Apakah tim memiliki keterampilan yang dibutuhkan untuk refactoring?
  • Apakah tim di bawah tekanan untuk menyelesaikan refactoring dengan cepat?

Kesimpulan

Kode program yang tidak teratur membuat software engineer pusing dan menghabiskan banyak waktu dalam membaca atau analisis dari logika program yang dibuat. Mulailah melakukan refactoring jika ditemukan kode program yang tidak teratur saat melakukan penambahan fitur baru sehingga software engineer bisa lebih cepat atau memudahkan untuk melakukan perubahan kedepannya serta menjaga kualitas aplikasi agar pengguna puas dalam menggunakan aplikasi tersebut dalam jangka panjang.

Dilihat sebanyak : 2000 kali

5 Responses to Mengenal Refactoring Dalam Software Development

  1. You have an amazing blog right here. I have gained a lot from it, thanks for sharing. I am hoping to visit your website once again. https://www.automymo.com/childrens-place-credit-card

  2. An impressive share! 
    Thanks, I’ve just been searching for information about this topic for a long time and yours is the best I have come upon so far.
    But, I have more tips that best explain more about the Paysafe Card Login and how to access them freely and easily I'm happy that I found this in my hunt for something relating to this.
    You won’t want to miss out, all you have to do is to visit the blog site through the link below.

  3. Andi says:

    Informasi ini bagus

  4. tecgist.com says:

    Thanks to you I now understand How to Accept Payments Online With Your WordPress Website in 2023. My website is tecgist.com, Tecgist.com is a blog aimed at informing people daily. We would provide you with Tech Tips, News, Opportunities, Hacks, and reviews.

  5. Adam ogbaga says:

    If you’re wondering how to get a Moniepoint POS machine, we have got you covered. kindly click on that link

Leave a Reply

Your email address will not be published. Required fields are marked *

[+] kaskus emoticons nartzco

This site uses Akismet to reduce spam. Learn how your comment data is processed.