Refactor Hardcoded String pada Views

Ilham Darmawan
PMPL DCP
Published in
4 min readDec 8, 2019

Pada sprint ini, saya melakukan proses refactoring untuk nilai-nilai yang ada pada file vacancies.py dan sso_login.py yang merupakan salah satu file yang ada dalam folder views. Proses refactoring ini dilakukan dengan memindahkan string tersebut ke dalam file. Setelah itu, masing-masing string tersebut akan direferensikan sebagai konstanta yang tersimpan dalam suatu variable.

Life is Hard Photo by Martin Péchy on Unsplash

Pengertian Hardcoded String

Dalam istilah pemrograman, kita seringkali mendengar istilah hardcoded. Lalu, apa sih yang dimaksud dengan hardcoded tersebut? Berdasarkan kamus Oxford, hardcode adalah suatu data atau parameter yang fixed dimana perubahan nilai tersebut akan mempengaruhi program. Lebih lanjut lagi, hardcoded string adalah suatu nilai hardcoded yang diimplementasikan pada kode dalam bentuk tipe data string.

Penggunaan hardcoded string ini seringkali digunakan oleh para software developer setidaknya untuk ketiga hal berikut:

  • Sebagai kondisi untuk mengecek suatu nilai string yang diterima
  • Sebagai link atau token yang digunakan untuk mengakses website
  • Sebagai placeholder dalam pesan error

Pada file sso_login.py dan vacancies.py terdapat ketiga hal tersebut. Sebagai contoh, pada vacancies.py terdapat kondisi pada suatu fungsi yang menggunakan string.

Penggunaan String untuk mengecek nilai dari variable

Pada kode yang ada di gambar tersebut, fungsi get_permission() mengecek apakah dalam variable self.action mengandung string list. Kemudian, masih pada file yang sama, juga terdapat penggunaan string untuk menampilkan pesan error.

Penggunaan String dalam pesan error validasi

Pada kode tersebut, dijalankan perintah untuk melempar exception dengan pesan stringYou have already applied for the vacancy’. Selanjutnya, pada file sso_login.py juga menggunakan string sebagai url. Penggunaan string tersebut dapat dilihat pada gambar di bawah.

Pada gambar tersebut digunakan string untuk menyimpan url dari API akun CSUI.

Dampak Penggunaan Hardcoded String

Sebagai programmer saya juga seringkali menggunakan string secara hardcoded dalam suatu kode seperti untuk menyimpan url dan mengecek isi dari suatu variable terhadap string tertentu. Akan tetapi, cara ini ternyata bukan merupakan hal yang baik. Penggunaan hardcoded string dapat membuat kode yang sulit untuk di-maintain. Kode yang sulit di-maintain dapat berupa kode yang sulit dibaca atau sulit untuk diubah.

Dalam bidang SQA, dampak dari kode yang sulit untuk di-maintain akan meningkatkan biaya pada Internal Failure Cost dan Managerial and Preparation Cost. Internal failure cost akan meningkat ketika terjadi error pada program dan perlu dilakukan proses refactoring. Pada kasus ini, proses refactoring untuk mengoreksi program dapat memakan waktu dan biaya yang lebih banyak karena kode yang sulit di-maintain. Sebagai contoh, url atau string dalam kondisi yang tidak deskriptif tentunya dapat membuat programmer kesulitan untuk memahami kode.

Kode yang sulit untuk di-maintain juga mempengaruhi managerial and preparation cost. Hal ini dapat terjadi karena salah satu cost yang termasuk ke dalam managerial and preparation cost adalah biaya untuk meng-update project dan quality plans. Pada kasus ini, kode akan menjadi sulit untuk diperbaharui karena adanya hardcoded string yang mana perubahan pada nilai tersebut dapat mengubah jalannya program.

Cara untuk Mengantisipasi Dampak Negatif Hardcoded String

Cara untuk mengantisipasi dampak negatif dari hardcoded string dapat dilakukan dengan cara membuat string yang deskriptif. Namun, cara ini belum menyelesaikan kemudahan untuk mengubah kode. Pada exercise kali ini, masing-masing dari string tersebut dimasukkan ke dalam sebuah file bernama views_constants.py . Contoh isi dari file tersebut dapat dilihat pada gambar berikut.

Isi file views_constants.py

Dalam file tersebut dapat dilihat sekumpulan variable yang memiliki nilai string. Selain itu, nama dari variable tersebut dibuat secara deskriptif sehingga memudahkan programmer untuk memahami isi dari variable tersebut yang juga memudahkan programmer untuk memahami keseluruhan kode.

Dengan cara pemindahan tersebut, dapat memudahkan refactoring kode karena tidak perlu mengubah nilai yang sama secara berulang yang dapat menimbulkan bug apabila ada string yang terlewat. Selain itu, dengan penempatan nilai string dalam suatu file juga dapat memudahkan pencarian apabila terdapat typo. Demikian perubahan yang saya lakukan selama menjalani sprint 3 ini.

--

--