Kembali ke blog
Tech

Refactoring: Memperindah Code yang Berantakan

Panduan praktis refactoring untuk developer yang mau bikin code lebih rapi, mudah maintenance, dan dimengerti orang lain.

#refactoring #clean-code #best-practices #backend

Libur panjang jangan lupa belajar ngoding ya! Ada banyak hal agar bisa jadi developer yang “baik”—salah satunya adalah dengan belajar refactoring.

Apa Itu Refactoring?

Refactoring adalah teknik memperindah dan membuat code agar menjadi lebih rapih. Teorinya saya baca dari refactoring.guru—web belajar refactoring & design pattern yang keren banget.

Kenapa Harus Refactor?

Tujuannya ada banyak, salah satunya: mempermudah kamu saat maintenance.

Pernah liat projek yang super ruwet dan dikerjain asal-asalan? Pasti banyak. Developer yang “kurang baik” biasanya ngoding asal-asalan—cuma Tuhan dan dia yang tau itu baris code seperti apa.

Sedangkan developer yang “baik” adalah developer yang bisa membuat developer lainnya ngerti code yang dia tulis. Dengan refactor, semua kode dibuat lebih simplify dan nggak buang-buang baris kode.

Contoh Sederhana

Pernah lihat temenmu bangga liat kode sampe 1000 baris dalam satu file? 1000 baris itu bisa jadi bukan 1000 baris yang layak, melainkan banyak kode yang tidak efektif.

Before (Duplikasi Kode)

// Contoh: Kode yang duplikat
data.forEach(item => {
  if (item.type === 'A') {
    processA(item);
  }
});

// ... 100 baris kode lain ...

data.forEach(item => {
  if (item.type === 'A') {
    processA(item);
  }
});

After (Direfactor)

const processTypeA = () => {
  data.filter(item => item.type === 'A').forEach(processA);
};

// Panggil fungsi saat dibutuhkan
processTypeA();

“Loh ngapain ribet-ribet bang?”

Ya biar lebih gampang! Karena keduanya memiliki algoritma yang sama, ya refactor aja biar lebih simplify. Tujuan lainnya: kalau berubah, efeknya akan ke semuanya sekaligus.

Aturan Dasar Refactoring

Kalo hanya ada satu, it’s ok. Kalo udah ada dua algoritma yang outputnya sama persis, kamu mulai harus mikirin refactoring. Kalo udah ada tiga, segera refactoring, atau mati (HAHAHA just kidding).

Indentation Hell

Ini sahabat karibnya Callback hell di Javascript. Indentation hell adalah nerakanya engineer—saking banyaknya kondisi sampe harus ke kanan terus.

Before:

if (condition1) {
  if (condition2) {
    if (condition3) {
      if (condition4) {
        // ... deep nesting
      }
    }
  }
}

After (Guard Clause):

if (!condition1) return false;
if (!condition2) return false;
if (!condition3) return false;
if (!condition4) return false;

// Do the thing

Lebih sederhana kan? Cara ini ada pro dan cons-nya, tergantung gimana algoritma kalian.

Pattern Flag

Pake flag! Flag itu semacam variable penanda yang akan jadi acuan, biasanya pake Boolean karena enak diolah.

let isValid = true;

if (someCondition) isValid = false;
if (anotherCondition) isValid = false;

if (!isValid) return handleError();

Kenapa Code Kita Jadi Berantakan?

Pasti kamu pernah baca code sendiri dan bingung: “Ini baris ngapain?”

Ya jelas! Toh ketika ngoding kamu masuk sage mode—tetiba nulis kode kaya kerasukan jin coding—sehingga cuma kamu dan Tuhan yang tau. Giliran 2 minggu lagi ngeliat kode itu, bahkan yang nulis pun bingung. Tinggal Tuhan deh yang tau.

Programmer yang Baik

Programmer yang baik itu yang bisa nulis kode dan dimengerti oleh komputer itu sendiri DAN programmer lainnya.

Kalo programmer lain aja nggak paham maksud kodemu, siap-siap ditampar ya (hahaha).

Tapi perlu diinget: engineering itu berproses. Makanya salah satu tugas lead software engineer itu biasanya refactoring. Code-code yang ditulis sama team members akan diperiksa kembali dan dicek mana yang bisa di-enhance.

Seiring perkembangan fitur, tentu code jadi makin gendut. Biasanya ketika dikejar deadline, beberapa software engineer professional ngerjainnya ngebut dan nggak rapih-rapih amat—tapi inget: ngga rapih-rapih amat lho, bukan berantakan.

Kesimpulan

Refactoring itu penting untuk:

  • Performa kode — Lebih efisien
  • Maintenance — Mudah diurus
  • Kolaborasi — Orang lain bisa baca

Ini baru ngomongin refactoring loh, belom design pattern. Tungguin artikel selanjutnya kalo saya gabut ya.

Yang mau mutualan sok DM, asal jangan ngedm ngirim error—auto saya kacangin xixixi.