Bloater

Long Method

Ini adalah code smell di mana pendefinisian method terlalu panjang. Tentu saja hal ini dapat menyulitkan pengembang lain atau pengembang yang sama di waktu yang berbeda untuk dapat memahami kode yang ditulis. Selain itu, code smell ini sering kali terhubung dengan pelanggaran Single-Responsibility Principle. Berikut ini contohnya:

public void someCalculation() {
        System.out.println("Langkah 1: inisialisasi");
        // kode untuk inisialisasi

        System.out.println("Langkah 2: ambil data dari database");
        // kode untuk mengambil data dari database

        System.out.println("Langkah 3: pemrosesan data dari database");
        // kode untuk memproses data yang telah diambil dari database

        System.out.println("Langkah 4: melakukan perhitungan yang kompleks");
        // kode untuk melakukan perhitungan yang kompleks

        System.out.println("Langkah 5: Melakukan finalisasi dan mengirim data ke service lain");
        // kode untuk finalisasi dan mengirim data ke service lain
    }

Dalam contoh di atas, method someCalculation melakukan beberapa langkah-langkah yang di setiap langkahnya melakukan hal dengan kewajiban yang berbeda (misal ambil data dari database, melakukan perhitungan yang kompleks, dan mengirim data). Method seperti ini akan sulit untuk dibaca dan dilakukan pemeliharan.

Penanganan Long Method

Beberapa penanganan yang dapat dilakukan untuk long method adalah dengan ekstraksi method. Untuk setiap langkah/kewajiban yang berbeda, kita dapat membuat method tersendiri. Method utama akan memanggil method baru yang dibuat. Dengan cara ini, kode akan lebih mudah dipahami.

Jika diperhatikan, bisa jadi method yang baru didefinisikan perlu data untuk yang didapat dari method baru yang dijalankan sebelumnya (misal performComplexCalculation perlu data dari processData). Dalam hal ini kita dapat membuat processData mengembalikan data dan digunakan sebagai masukan untuk method performComplexCalculation.

Last updated