Seluruh teknik pada section ini — parameter, return value, overloading, hingga tuple — adalah alat; kualitas kode ditentukan oleh cara kita merancang methodnya. Method yang dirancang baik mudah dibaca, mudah diuji, dan jarang perlu diubah. Prinsip-prinsip berikut menjadi pegangan sebelum kita menulis method baru.

Prinsip Utama #

PrinsipPenerapan
Satu tugas per methodHitungTotal hanya menghitung; CetakStruk hanya mencetak
Nama deskriptif berupa kata kerjaHitungDiskon, BacaKonfigurasi; hindari nama seperti Proses1
Parameter secukupnyaLebih dari empat parameter patut disederhanakan, misalnya dikemas sebagai tuple
Hindari efek samping tersembunyiMethod bernama Hitung... tidak mengubah data lain atau mencetak diam-diam
Body tetap pendekBila body memanjang, pecah menjadi local functions atau method kecil

Parameter boolean yang mengubah arah kerja method secara total juga patut dicurigai: CetakLaporan(true) menyembunyikan maknanya, sementara dua method bernama jelas lebih mudah dipahami.

Contoh Penerapan #

csharp
static class Tagihan
{
    public static int HitungTotal(int hargaSatuan, int jumlah, int persenDiskon)
    {
        int subtotal = hargaSatuan * jumlah;
        int potongan = subtotal * persenDiskon / 100;
        return subtotal - potongan;
    }

    public static string DeskripsiTagihan(int hargaSatuan, int jumlah, int persenDiskon)
    {
        int total = HitungTotal(hargaSatuan, jumlah, persenDiskon);
        return $"{jumlah} barang, total {total}";
    }
}

int total = Tagihan.HitungTotal(25000, 3, 10);
Console.WriteLine($"Total tagihan: {total}");
Console.WriteLine(Tagihan.DeskripsiTagihan(25000, 3, 10));

Output yang Dihasilkan:

text
Total tagihan: 67500
3 barang, total 67500

Mari kita bedah baris demi baris:

  1. Baris 3-8 (HitungTotal): method ini murni — masukan berupa angka, keluaran berupa angka, tanpa mencetak maupun mengubah data lain. Sifat murni membuatnya mudah diuji: beri masukan, bandingkan keluarannya.
  2. Baris 10-14 (DeskripsiTagihan): method ini memakai ulang HitungTotal alih-alih menyalin rumusnya, sehingga logika diskon hanya hidup di satu tempat.
  3. Baris 17-19: pemanggil memilih bentuk yang dibutuhkan — angka mentah dari HitungTotal, atau teks siap tampil dari DeskripsiTagihan.

Bila aturan diskon berubah besok, perbaikan cukup dilakukan pada HitungTotal, dan kedua pemanggil otomatis mengikuti. Inilah manfaat nyata dari pemisahan tugas: satu perubahan, satu lokasi.

Kebiasaan yang Perlu Dihindari #

  • Method serba bisa yang namanya tidak menggambarkan isinya, misalnya ProsesData yang sekaligus membaca file, menghitung, dan mencetak.
  • Method yang mengembalikan void padahal hasilnya akan dibutuhkan pemanggil untuk perhitungan berikutnya.
  • Nama parameter yang generik seperti a, b, atau data, yang memaksa pembaca membuka body untuk memahaminya.