Refactoring & Design Pattern in our Project

Ibnu Firdaus
PPL D7 — Fasilkom UI
4 min readApr 3, 2019

Let’s see how we do it.

Design Pattern

Halo teman-teman!! Kembali lagi dengan saya pada blog dari seri PPL 2k19. Oke, kali ini kita akan membahas sebuah topik yang cukup menarik, yaitu Refactoring, dan Design Pattern. Kenapa menarik? karena 2 hal ini akan menjadi makanan kita sehari-hari sebagai seorang programmer, but not literally tho, we still eat rice.

Refactor

Refactor (atau lebih sering dikenal dengan code refactoring) adalah sebuah proses dalam rekstrukturisasi program yang sudah ada sebelumnya. Secara singkat, kita mengubah struktur internal dari sebuah program, tanpa mengubah struktur/behaviour eksternal dari program tersebut.

Jadi, apa gunanya? kan udah jalan juga ?? Apakah ini sebuah konspirasi agar pegawai bisa tetap dibayar dengan zero actual product???

Tidak seperti teman-teman, refactor ini juga memiliki manfaat juga lho! Misal, kita dapat melakukan improvement terhadap jalannya suatu program, katakanlah sebuah program butuh 15 detik untuk berjalan, nah sekarang kita optimisasi agar bisa berjalan lebih singkat, katakanlah 12–10 detik. Melalui apa kita melakukan itu? Ya tentu lewat refactor!

Selain dilihat dari sisi optimisasi, refactor ini juga berguna untuk meningkatkan code readability dari program yang dibuat, jadi misalnya nih, kode yang kita buat itu berantakan sekalee dan asal jalan aja, nah inilah momen teman-teman untuk menebus kesalahan tersebut dengan memperbaikinya.

Keuntungan yang didapatkan dari refactor ini antara lain,

  • reduced complexity — Optimization!
  • improved readability
  • maintainable state
  • open to extensibility

Jadi, jangan salah, refactor adalah sebuah aspek penting dalam day-to-day programming, bahkan, perusahaan berani bayar gede lho buat orang yang bisa ngelakuin ini, karena butuh skill baca kodingan njelimet dan mampu mengubah tumpukan berantakan itu menjadi sesuatu yang rapi. Jadi, refactor your mind regarding this!

Design Pattern

Dalam dunia software engineering, design pattern bisa dikatakan sebagai sebuah template, pola, solusi umum yang bersifat umum (standarnya diketahui dan disetujui secara luas) dan dapat digunakan sebagai pendekatan dalam pengembangan perangkat lunak.

Harap perhatikan bahwa design pattern bukanlah solusi akhir, code jadi siap pakai, bukan itu. Design Pattern itu lebih ke guide, petunjuk, atau framework kerja yang mengatur bagaimana kita mengembangkan produk yang kita buat.

Secara umum, ada tiga klasifikasi design pattern, yaitu

  • Creational pattern, design pattern ini membahas tentang bagaimana sebuah instance/objek dibuat, bagaimana kita membuat objek yang cocok dengan situasi, kondisi, serta kebutuhan yang ada
  • Structural pattern, design pattern ini lebih berfokus pada bagaimana relasi atau hubungan antar objek terjadi, bagaimana caranya agar dua objek yang berbeda bisa saling bekerja sama, bagaimana membuat flow task lebih mudah dan manageable, dan lain-lain.
  • Behavioral pattern, design pattern ini lebih fokus untuk membahas isu terkait flow komunikasi antar objek-objek yang ada. Bagaimana caranya agar task dapat dilakukan oleh sebuah objek dengan lebih terstruktur, bagaimana caranya agar task dapat berjalan secara general, namun hasilnya dapat disusun secara custom.

Lalu, apa keuntungannya menggunakan design pattern? Kenapa nggak langsung ngoding aja? Pertama, design pattern merupakan hal yang bersifat general dan agreeable. Sehingga, saat kita bilang ke rekan kerja kita kalau kita pakai design pattern X, maka dia akan langsung tau gambaran umum dari produk yang kita buat. Kedua, ini akan mempermudah pekerjaan, karena design pattern sudah terbukti penerapannya, sehingga kita tidak perlu khawatir tentang penerapannya selama kita mengikutinya dengan benar!

Implementation

Di PPL ini, kelompok kami sering sekali melakukan refactor, hal ini disebabkan oleh beberapa hal, yaitu :

  • Internal optimization
  • Better task flow / communication
  • Standardized implementation
  • Mismatch fixing

Jadi, memang kerasa banget nih manfaat dari refactor ini

Refactor all the way!

Karena sifat development sangat dinamis dan cepat, tidak menutup kemungkinan kesalahan-kesalahan akan sering terjadi, oleh karena itulah refactor hadir untuk membantu kami dalam kasus ini.

Kami menerapkan sebuah design pattern yaitu Module. Jadi, design pattern ini berfokus pada penggabunan beberapa elemen seperti class, fungsi, variabel, dan lain-lain, dimana masing-masing elemen tersebut relatif tidak sama, lalu elemen-elemen tersebut digabungkan untuk membentuk sebuah elemen baru dengan sebuah konsep baru.

Pada kasus ini, kami memiliki class dengan method yang memiliki prinsip kerja yang berbeda-beda, ada yang mengakses database, ada yang menghitung, ada juga yang melakukan storing ke database. Nah, elemen-elemen ini kami gabungkan menjadi satu membentu sebuah elemen baru yaitu prediction runner, yang dapat melakukan prediksi atau estimasi pembelajaan dari history pembelajaan user, serta menyimpan hasilnya ke database, jadi elemen ini lebih bersifat all-in-one!

Jadi, begitulah sesi postingan blog kali ini, akhir kata, thanks and see you next time!

--

--