Tidak tau tentang Design pattern seakan-akan menjadi aib ketika di jaman sekarang seorang pengembang perangkat lunak tidak tau apa itu Design Pattern, benarkah?
Tentunya proses belajar setiap orang berbeda-beda dan bisa jadi ada seorang pengembang perangkat lunak yang tidak tau sama sekali tentang Design Pattern sekalipun sudah lama menjadi pengembang perangkat lunak.
Definisi sederhana dari Design Pattern adalah suatu pola atau struktur kode yang dipakai berulang-ulang untuk menyelesaikan suatu masalah yang memiliki pola serupa. Apakah seperti membuatfunction
atau method
yang dipakai berulang-ulang? apakah itu contoh Design Pattern?
Design Pattern bukan sekedar function
atau method
, tapi memang 2 hal tersebut adalah bagian dari Design Pattern.
Berdasarkan buku pertama Design Patterns yang dirilis tahun 1994 ada 23 pola desain yang dikelompokan ke dalam 3 bagian yaitu Creational, Structural, dan Behavioral. Saya tidak akan membahas bagian itu satu persatu karena kamu bisa membaca konsepnya dengan jelas di Wikipedia ataupun di sourcemaking.com dan refactoring.guru
Buku GoF tersebut dirilis tahun 1994 dengan contoh kode yang pada saat itu adalah kode aplikasi desktop atau aplikasi yang memiliki GUI (Graphical User Interface). Sedangkan jika kita melihat di jaman sekarang, sudah banyak pengembang perangkat lunak yang hanya berfokus pada backend tanpa GUI. Sehingga diperlukan contoh implementasi Design Pattern yang mengikuti kondisi saat ini. Namun secara konsep tetap bisa dijadikan bahan “debat kusir” eh.. maksudnya bahan diskusi
Tujuan utama dari Design Patterns adalah agar kode mudah dipelihara khususnya oleh pengembang lainnya, tapi kalau pengembang lain tidak paham design pattern bagaimana ya? sering kali malah bikin berantakan karena implementasinya jadi gak sesuai
Dalam hal implementasi Design Pattern tidak ada yang mutlak benar. Dalam hal ini benar adalah kesepakatan
Jadi gimana donk kalau mau belajar design pattern biar gak sesat?
Jika kamu memiliki banyak waktu untuk riset, silahkan mengkonsumsi dan mencerna berbagai macam artikel, buku dan paper terkait Software Design Pattern. Saya tidak akan mendebat kamu jika kamu memilih jalan itu, silahkan
Nah, untuk yang waktunya sempit ato cenderung pemalas
Pilih framework yang terpercaya, mumpuni, aktif di kembangkan dan aktif di pelihara oleh komunitas ataupun perusahaan dan memiliki dokumentasi yang mudah diikuti.
Contoh jika kamu seorang Java Developer coba belajar cara menggunakan Spring Framework dengan baik. Atau jika kamu seorang PHP Developer coba belajar cara menggunakan Laravel Framework dengan baik. Atau framework lainnya yang sesuai dengan bahasa pemograman yang kamu pakai sehari-hari.
Ketika kamu menggunakan framework tersebut dengan baik yaitu dengan mengikuti panduan dan best practices dari framework tersebut maka secara tidak langsung kamu sudah menerapkan beberapa Design Pattern. Loh kok bisa?
Hal serupa juga diutarakan oleh salah satu pengembang perangkat lunak dalam negeri yaitu Eko Khannedy dalam JVM meetup November 2019, cuplikannya dapat dilihat disini https://youtu.be/9xp7EIMXIKY.
Dan juga diutarakan oleh pengembang perangkat lunak luar negeri yaitu Matt Stauffer dalam acara Laravel Conference Online Maret 2020.
But the standard isn’t just a standard, it’s a very good standard. One of the things I love about Laravel is that when people join the Laravel community, they might not know about design patterns and SOLID and all this kinda stuff, or even good OOP, but in order to learn to use Laravel, those things are all baked into Laravel and so you’re learning about design patterns, or interface or whatever else it ends up being, by using Laravel, and people realize that learning Laravel actually teaches them more about architecture than stuff that they’ve learned that’s specifically trying to teach them about architecture.
Matt Stauffer at Laravel Conference Online March 2020
Dan saya yakin masih banyak pengembang perangkat lunak lainnya yang sepakat dengan hal tersebut.
Jadi penting ga penting tentang design pattern? tentunya penting jika melihat tujuan utama dari design pattern. Selama diimplementasikan sesuai dengan konsepnya atau minimal tidak jauh-jauh dari konsepnya. Karena setiap bahasa pemograman biasanya punya cara masing-masing untuk mengimplementasikan design pattern. Kamu bisa pelajari hal tersebut disini sourcemaking.com dan refactoring.guru.
Jadi, bagaimana menurut kamu?
Cover photo by Arif Riyanto on Unsplash