Refactoring and Design Pattern Pada Aplikasi PsychoTip

Faraya Agatha
PsychoTeam
Published in
4 min readApr 2, 2019

Design Pattern

Design Pattern adalah suatu metode untuk membantu menyelesaikan permasalahan yang umumnya berulang atau memiliki pola dalam pengembangan software. Design Pattern bukan merupakan sebuah metode yang langsung dapat diubah menjadi kode program melainkan sebuah pola dasar atau template dari sebuah cara untuk menyelesaikan suatu permasalahan dalam situasi yang berbeda-beda.

Macam-Macam Design Pattern:

  1. Creational Pattern : merupakan pola yang digunakan untuk menyelesaikan permasalahan yang ditemui dalam kejadian pembuatan suatu instance atau object. Design pattern ini dibagi menjadi 5 macam, yaitu factory method, abstract factory, builder, prototype, and singleton.
  2. Structural Pattern : merupakan pola yang digunakan untuk menyelesaikan permasalahan yang ditemui dalam pengaturan komposisi class dan object. Design pattern ini dibagi menjadi 7 macam, yaitu Adapter, Composite, Decorator, Proxy, Facade. Flyweight, Bridge.
  3. Behavioral Pattern : merupakan pola yang digunakan untuk menyelesaikan permasalahan yang ditemui dalam komunikasi antar object-object. Design pattern ini dibagi menjadi 11 macam, yaitu Template Method, Strategy, Command, Memento, Mediator, State, Observer, Iterator, Chain of Responsibility, Interpreter, Visitor.

Design pattern di atas adalah kategorisasi design yang ada pada umumnya, namun karena aplikasi kami berbasis android, saya menggunakan design diluar dari design pattern yang saya jelaskan di atas. Saya menggunakan design pattern MVP (Model-View-Presenter).

MVP (Model-View-Presenter)

MVP adalah turunan dari architectural pattern Model-View-Controller (MVC) yang sebagian besar digunakan untuk membuat user interface.

Model : Pada aplikasi yang memiliki arsitektur yang baik, Model hanya akan menjadi pintu ke domain atau business logic. Model dilihat sebagai penyedia data yang ingin ditampilkan. Model bertanggung jawab dalam menggunakan API, mengatur basis data, dll.

kelas Model pada PsychoTip

View : Biasanya diimplementasikan oleh Activity, view akan mengandung referensi ke presenter. Satu- satunya hal yang akan dilakukan view adalah memanggil method dari presenter setiap ada interface action.

interface view pada PsychoTip

Presenter : Bertanggung jawab untuk bertindak sebagai “middle-man” antara Model dan View. Presenter mengambil data dari model dan memberikannya ke View.

kelas presenter pada PsychoTip

Refactoring

Pada postingan sebelumnya, saya pernah membahas tentang TTD. Nah, refactoring adalah salah satu dari tiga komponen dalam TTD. Menurut Martin Fowler, refactoring adalah proses mengubah sistem suatu software tanpa mengubah perilaku eksternal (fungsionalitas akhir) dari software tersebut. Tujuan utama refactoring adalah meningkatkan kualitas struktur internal (code) suatu software.

Sebagai contoh, saya akan menunjukkan potongan kode dari proyek PsychoTip tim saya. Berikut adalah fungsi onClick pada activity login aplikasi Psychotip. Jika diperhatikan, fungsi onClick terlihat sangat panjang dan tidak efisien.

fungsi onClick activity login PsychoTip
lanjutan fungsi onClick activity login PsychoTip

Seperti yang kita telah pelajari, sebaiknya suatu fungsi hanya mengerjakan satu hal saja dan mempertahankan fungsi agar tetap berukuran kecil. Maka kita akan mengubah potongan kode diatas dengan mengeluarkan kode untuk mengecek username dan password dan membuatnya menjadi fungsi baru yang terpisah bernama requestLogin.

fungsi requestLogin pada activity login
penggunaan fungsi requestLogin pada fungsi onClick

Setelah diubah, terlihat fungsi onClick menjadi lebih kecil dan rapi. Contoh diatas hanyalah sebagian dari contoh-contoh refactoring yang saya lakukan dalam mengerjakan proyek PsychoTip. Jika ingin mempelajari langkah-langkah refactoring lebih lanjut, kalian dapat belajar dari buku Martin Fowler yang berjudul “Refactoring: Improving the Design of Existing Code”.

--

--