Pengalaman Coding dengan Design Pattern

Design Pattern dalam OOP itu ada banyak antara lain Singleton, Builder, Strategy, Mediator, Proxy, Observer. Saking banyaknya sampai kita bingung solusi menggunakan design pattern ini ngawur atau tepat.

Suatu hari ada yang bertanya kepada saya,

“Masbro, Saya bisa coding tapi kok rasanya kalau membuka kembali codingan sendiri seperti ruwet gitu ya, bagaimana solusinya?!”

Dulu semasa awal-awal menjadi programmer, saya mengalami hal serupa. Hal ini biasa disebut dengan Spagheti Code, kualitas coding kita memang beneran ruwet seperti spagheti.

Tapi tenang saja, ternyata coding ruwet ini ada solusinya kok. Saya banyak mendapatkan insight setelah belajar Design Pattern. Berikut pengalaman saya ketika berhadapan dengan kasus coding ruwet.

sumber https://devhumor.com/media/spaghetti-code-1

Design Pattern Experience 1

Pernah suatu saat tahun 2014 saya mengembangkan aplikasi untuk keperluan bisnis Bank. Tau sendiri lah ya, Bank itu kalay nyodorin form jumlah pertanyaanya kurang ajar. Banyak banget. Form ini harus saya representasikan dalam bentuk perangkat lunak, maka saya harus bisa membuat class dengan lebih dari dua puluh variabel. Problemnya disini, beberapa variabel sifatnya wajib dan sisanya opsional. Solusinya bisa pakai konsep constructor overload, semacam banyak constructor dalam satu class. Masalahnya masa iya kita harus bikin berkali-kali dengan berbagai varian argumen? Menginisiasi class dengan banyak variabel itu sangat membingungkan. Untungnya ada solusi lain yang lebih bagus, yaitu Builder Pattern.

solusi overload constructor
solusi builder pattern

Dari pengalaman ni saya mendapat satu insight. Sejak dulu kalau belajar OOP itu diawali dari belajar class Dog, Cat, atau Person. Lalu didalamnya dikasih variabel dan method seperti layaknya mekhluk hidup beneran, seperti var color, var feet, walk(), say() dsb. Contoh ini tidak pernah exists dalam real world case and business. Aneh. Baru saya menyadari kalau sebenarnya class adalah kumpulan variabel yang konteksnya sama dan state-nya perlu dijaga.

Design Pattern Experience 2

Saya di-challenge untuk membuat sebuah apps yang terdiri atas beberapa libs. Rule-nya apps harus bisa switch library in runtime. Artinya switching library dilakukan saat dipakai orang, bukan waktu compile. Strategy apa yang akhirnya saya gunakan? Simak ulasanya dalam podcast Bedah Teknologi

Referensi.

- https://howtodoinjava.com/design-patterns/creational/builder-pattern-in-java/

Coding | Writing | Sharing. Co-founder Hepicar. IG www.instagram.com/akbarul.huda

Coding | Writing | Sharing. Co-founder Hepicar. IG www.instagram.com/akbarul.huda