Design Pattern & Refactoring

mohamad mahendra
PPL D7 — Fasilkom UI
3 min readApr 18, 2019
Ender Aydin Orak

Design Pattern

Design pattern adalah sebuah istilah di dalam rekayasa perangkat lunak yang mengacu pada solusi umum yang bisa dipergunakan kembali atau berulang-ulang untuk menyelesaikan masalah-masalah yang umum terjadi dalam konteks tertentu atau khusus yang ditemui pada desain perangkat lunak. Sebuah Design Pattern yang sudah terbentuk bukan berarti desain tersebut dapat langsung digunakan untuk menulis program.

Design Pattern sendiri dapat di analogikan sebagai sebuah resep makanan yang dapat digunakan untuk membuat makanan, namun pada kenyataannya selera orang berbeda-beda sehingga untuk menggunakan resep tersebut agar menghasilkan makanan yang enak dan sesuai harus dilakukan penyesuaian dengan kebutuhan dan keadaan.

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 sih design pattern yang kita gunakan dalam proyek ppl kali ini? Kami menggunakan sebuah design pattern yang bernama Module. Jadi pada design pattern Module, fokus kepada penggabungan class, fungsi, dan variabel kecil menjadi sebuah menjadi sebuah elemen baru. Implementasi pada proyek kami dapat dilihat pada perhitungan statistik dimana terdapat banyak kelas yang berbeda-beda yang memiliki fungsi berbeda seperti melakukan perhitungan interval, pengambilan database dan lainnya. Pada akhirnya fungsi kecil tersebut akan menjadi sebuah fungsi besar yang membuat perhitungan estimasi.

Folder Kode Proyek PPL Kami
Contoh sebuah fungsi modular

Dapat dilihat diatas pada folder kode kami bahwa terdapat banyak sekali fungsi fungsi yang digunakan dalam sebuah perhitungan. Dan masing-masing fungsi tersebut cukup modular dapat dilihat pada gambar kedua, sehingga fungsi-fungsi ini dapat dengan mudah di reuse oleh fungsi manapun.

Refactoring

Refactoring adalah salah satu komponen dari tiga komponen pada proses TDD yaitu test (red), implement (green), refactor (blue). Menurut buku Martin Fowler, refactoring adalah proses mengubah sistem dari suatu perangakat lunak tanpa mengubah perilaku eksternal (fungsionalitas akhir) dari perangkat lunak tersebut. Tujuan utama dari refactoring adalah meningkatkan kualitas struktur internal dari perangkat lunak. Refactoring merupakan langkah untuk “membersihkan” code sehingga dapat meminimalkan peluang munculnya software defect (bug) pada implementasi yang dibuat. Jadi secara umum, ketika kita melakukan refactor, kita sedang meningkatkan kualitas desain dari perangkat lunak kita.

Lalu apa yang membuat Refactoring ini penting? Misalkan sebuah program membutuhkan 15 detik untuk berjalan, setelah melakukan refactoring program kita akan teroptimisasi sehingga hanya membutuhkan 10 detik untuk berjalan. Selain itu kode yang telah di refactor dapat dibaca dengan mudah sehingga memudahkan programmer lain dalam menggunakan kode tersebut. Dan masih banyak manfaat refactoring lainnya.

Jadi cukup sekian sesi postingan kali ini semoga dapat berguna bagi teman teman semua. See you

--

--