
Studi Kasus Mini Project: Kasir Sederhana Sebelum dan Sesudah Refactor
Dalam artikel ini, kita akan melihat bagaimana refactoring bisa diterapkan dalam mini project sederhana — aplikasi kasir. Kita akan mulai dengan versi awal (belum dirapikan), lalu melakukan refactor agar kode menjadi lebih rapi, modular, dan mudah dikembangkan.
1. Versi Awal: Langsung di main()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import java.util.Scanner; public class Kasir { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Nama Barang: "); String nama = input.nextLine(); System.out.print("Harga Barang: "); double harga = input.nextDouble(); System.out.print("Jumlah: "); int jumlah = input.nextInt(); double total = harga * jumlah; double pajak = total * 0.1; double bayar = total + pajak; System.out.println("Total Bayar: " + bayar); } } |
Versi ini berjalan, tapi seluruh logika ditulis dalam satu method. Ini menyulitkan pengujian, pembacaan, dan pengembangan fitur baru seperti diskon atau cetak struk.
2. Versi Setelah Refactor
Kita pisahkan logika menjadi beberapa method kecil:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
import java.util.Scanner; public class KasirRefactor { public static void main(String[] args) { String nama = inputNamaBarang(); double harga = inputHarga(); int jumlah = inputJumlah(); double total = hitungTotal(harga, jumlah); double bayar = hitungBayar(total); cetakStruk(nama, harga, jumlah, bayar); } static String inputNamaBarang() { Scanner input = new Scanner(System.in); System.out.print("Nama Barang: "); return input.nextLine(); } static double inputHarga() { Scanner input = new Scanner(System.in); System.out.print("Harga Barang: "); return input.nextDouble(); } static int inputJumlah() { Scanner input = new Scanner(System.in); System.out.print("Jumlah: "); return input.nextInt(); } static double hitungTotal(double harga, int jumlah) { return harga * jumlah; } static double hitungBayar(double total) { return total + (total * 0.1); // 10% pajak } static void cetakStruk(String nama, double harga, int jumlah, double bayar) { System.out.println("--- Struk Pembayaran ---"); System.out.println("Barang: " + nama); System.out.println("Harga: " + harga); System.out.println("Jumlah: " + jumlah); System.out.println("Total Bayar: " + bayar); } } |
3. Keuntungan Refactor
- Lebih mudah diuji: Setiap method bisa diuji secara terpisah
- Lebih fleksibel: Menambahkan fitur seperti diskon atau metode pembayaran jadi lebih mudah
- Lebih rapi: Kode modular dan mudah dibaca
4. Kesimpulan
Studi kasus ini menunjukkan bagaimana refactoring bukan hanya soal merapikan kode, tapi juga soal membuat program yang mudah dikelola dan dikembangkan. Di artikel berikutnya, kita akan mulai menerapkan OOP ke dalam mini project ini dengan membuat class untuk barang dan transaksi.
Ditulis sebagai bagian dari Seri Tujuh: Studi Kasus dan Refactoring Mini Project di Java