Gambar 1. Cover buku "Refactoring : Improving the Design of Existing Code" karya Martin Fowler

 

Masa hidup software, termasuk game, tidaklah berhenti pada saat project game tersebut dinyatakan selesai. Ada kemungkinan game akan berevolusi untuk memenuhi dan menyesuaikan selera pasar. Tidak hanya itu, sebagian part dari source code game tersebut bisa di-reuse kembali untuk membuat game baru dengan menambahkan beberapa fitur yang berbeda, apalagi di masa sekarang yang umumnya studio game tidak dapat hanya mengandalkan 1 judul game untuk dapat sukses di pasaran.

 

 

Hal itu juga berlaku di Maulidan Games. Mengadopsi pemikiran "do NOT reinventing the wheel", tim Maulidan Games selalu menggunakan ulang sebagian source code game yang sudah ada untuk membuat game baru yang bahkan memiliki genre yang tidak sama. Perlu dipahami, bahwa memprogram ulang setiap source code di setiap project baru merupakan cara kerja yang kurang efisien dan dapat dipastikan pembuatan setiap game baru akan selalu  membutuhkan waktu yang lama. Di sinilah kita paham bahwa code reusability merupakan salah satu hal yang sangat penting dalam pembangunan sebuah game.
 

Nah, permasalahan yang timbul adalah ada kalanya proses reuse tersebut tidak mudah dilakukan karena source code yang lama memiliki struktur yang buruk, yang disini kita kenal sebagai Code Smell. Begitu pula ketika bekerja dalam sebuah proyek yang dikerjakan oleh beberapa programmer, jika struktur code buruk maka programer lain dalam satu tim akan kesulitan untuk memahaminya. Seberapa baik ataupun buruknya kualitas code seorang programmer dapat diukur dari seberapa mudah programmer lain melanjutkan code tersebut. Bila programmer lain tersebut sampai berpendapat, "Lebih baik saya coding ulang dari awal daripada melanjutkan program ini", maka dapat dipastikan code tersebut memiliki banyak Code Smell di dalamnya.
 

Code Smell

Code smells mengindikasikan adanya kelemahan struktur desain program yang dapat memperlambat development atau menambah resiko bug dan kegagalan di masa depan. Code Smells disebut juga Bad Smell Code. Dari sisi programmer, adanya Code Smell akan menyebabkan kebingungan dalam memahami program dan bahkan seringkali sang programmer harus melakukan banyak hal serupa secara berulang-ulang. Code Smell umumnya terjadi saat programmer terlalu fokus pada penyelesaian sebuah project dengan terburu-buru yang berakibat tidak diperhatikannya desain dari code yang dia buat.

Satu catatan yang penting dan harus diperhatikan : program dengan Code Smell akan tetap dapat berjalan secara lancar dari sisi eksekusi, tanpa bug, tanpa error, namun dari sisi maintenance akan sulit sekali dilakukan khususnya untuk program-program yang akan digunakan untuk jangka panjang dan melibatkan banyak programmer. Salah satu ilustrasi paling tepat yang menggambarkan Code Smell adalah gambar berikut :

 

 

Pada ilustrasi di atas dapat kita pastikan kabel-kabel tersebut akan berfungsi sebagaimana mestinya, tidak ada error, piranti dapat berjalan secara lancar. Namun bagaimana dari sisi maintenance? Apakah ada teknisi lain yang mampu memahami dan didelegasikan bila suatu hari terjadi error dan hal-hal lain yang tidak diinginkan? :)

 

Refactoring

Refactoring adalah proses mengubah struktur internal program tanpa mengubah behavior program tersebut. Proses ini akan menghasilkan clean code yang mudah dibaca dan dimengerti, tidak mengandung duplikasi, dan mudah di-maintenance.

 

"The only way to make the deadline—the only way to go fast—is to keep the code as clean as possible at all times." - Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship

 

Singkatnya, Refactoring adalah solusi dari Code Smell. Kita dapat membandingkan Code Smell dan Refactoring seperti ilustrasi pada gambar di atas dengan ilustrasi pada gambar berikut :

Lebih rapi dan mudah di-maintenance kan?

 

Beberapa Manfaat Refactoring

  1. Meningkatkan desain code pada software atau game
  2. Membuat source code  menjadi mudah dimengerti dan dipetakan
  3. Mempermudah dalam proses menemukan bug
  4. Membantu memprogram dengan lebih cepat
  5. Mempermudah proses delegasi antar programmer (jaga-jaga seandainya programmer utama sedang sakit dan sebagainya)
  6. Mempersingkat time development

Program dengan struktur yang baik (atau disebut sebagai Clean Code) memiliki perbedaan yang signifikan dari segi development time dan cost dibandingkan program dengan struktur yang berantakan. Clean code akan mempunyai life time yang lebih panjang karena bisa digunakan untuk pengembangan program-program selanjutnya. Studio game secara tidak langsung akan dapat menghemat time dan cost development dengan mengimplementasikan refactoring pada proses programming-nya.

 

Baca Selanjutnya : Empat Hal yang Mengharuskan Dilakukannya Refactoring Beserta Contoh Implementasinya Dalam Game Programming

 


Referensi Teori :

1. https://refactoring.guru/

2. Buku "Refactoring : Improving the Design of Existing Code" karya Martin Fowler

 

Source Gambar :

Gambar 1. Buku "Refactoring : Improving the Design of Existing Code" karya Martin Fowler

Gambar 2. https://refactoring.guru/

Gambar 3 : www.dcig.com

Similar Article


Januari 2016, Maulidan Games Membuka Kesempatan Magang untuk Pelajar dan Mahasiswa


Mengenal Markas Kerja Developer IT di Surabaya, GERDHU


Mengenal Agile Project Management


Agile Manifesto dan 12 Prinsip yang Harus Diterapkan Dalam Agile Development (Part 1)


Mengenal Design Pattern


Yuk, Simak Aktivitas Para Peserta Magang di Maulidan Games


Creational Pattern - Factory Method


Buat Game dalam 30 Menit, Maulidan Games Mendemokan Diamond v3.0 dalam Seminar di Politeknik Negeri Malang


Empat Hal yang Mengharuskan Dilakukannya Refactoring Beserta Contoh Implementasinya Dalam Game Programming


BAHASA INDONESIA - Devblog Legion Tale April 16th 2017 - Animation is Really Matter.


ENGLISH - Legion Tale Devblog April 16th 2017 - Animation is Really Matter.


BAHASA INDONESIA - Devblog Legion Tale April 18th 2017 - Legion Tale Story