Code ReviewAturan dasar coding tim

Materi

Code Review

12 November 2026

Yogyakarta, JMC Indonesia

Code Review:
Aturan Dasar Coding

Kode rapi, tim senang, kerjaan lancar.

Tujuan code review

Kode mudah dibaca dan dipahami siapa pun di tim.

Bug dan pekerjaan ulang berkurang.

Aplikasi lebih aman dan mudah dirawat.

Kode yang mudah dibaca

Table view, helper class atau fungsi, dan nama variabel yang jelas. Hasilnya: programmer senang, kerjaan lancar.

Kurang baikLebih baik
$d, $x, $tmp$tanggalBayar, $totalTagihan
Semua logika di satu fungsi panjangLogika dipisah ke helper class atau fungsi

Hindari kode berulang

Masalah

Kode yang sama di banyak tempat. Satu perubahan harus diubah berkali-kali dan mudah ada yang terlewat.

Solusi

Buat helper, service, atau trait. Tulis sekali, pakai di banyak tempat.

Keamanan

  • Interaksi antar API wajib memakai token.
  • File .env wajib masuk .gitignore.
  • Jangan menaruh key atau password langsung di kode.
  • Untuk create, update, dan delete, utamakan query builder daripada query mentah, agar aman dari SQL injection.

Pecah file yang terlalu besar

Jika satu file mendekati 2000 baris atau berisi terlalu banyak hal, buat partial file.

File kecil lebih mudah dibaca, dicari, dan di-review.

Dokumentasi dan database

README

Wajib diperbarui setiap menambah fitur atau membuat aplikasi baru.

Struktur database

Harus sesuai standar JMC.

Standar struktur database JMC

DB dipakai dan dikonsumsi banyak tim.

Kadang DB diserahkan ke konsumen IT juga.

Standar yang sama membuat pengembangan lebih mudah.

Penamaan tabel

AturanContoh
Jelas, sesuai fungsi tabelpayment_history
Bahasa Inggris saja, istilah bakucustomer
Singular, tanpa tambahan scustomer, bukan customers
lower_case dan snake_casewater_meter
Tanpa prefix atau awalanuser, bukan tbl_user
Singkat dan tidak ambiguinvoice

Jika DB berasal dari pihak luar, ikuti standar client.

Penamaan kolom dan tipe data

Kolom: pakai satu bahasa secara konsisten. Jika bahasa Indonesia, sesuai KBBI. Singkatan boleh, asal mudah dipahami.

Tipe data disesuaikan dengan kebutuhan:

DataTipe
PK dan FKint
Jumlah barangint
Nominal uangdecimal(20,2)
Stringvarchar atau text
Longitude dan latitude (umum di GIS)float atau double

Tipe data custom: perlu riset lebih lanjut.

Tipe data yang dihindari

Hindari

enum
set
boolean

Gantinya

Simpan id saja, nilainya disimpan di tabel lookup lalu direlasikan.

Lookup table (tabel kecil)

Menggantikan enum atau flag. Contoh: status, jenis_kelamin, tahapan. Tabel banyak tidak masalah.

Penggunaan key

  • Semua relasi wajib memakai FK.
  • Pakai constraint sesuai aturan bisnis: nullable, primary key, unique (contoh: username).
  • Buat index untuk optimasi filtering.
  • Engine InnoDB direkomendasikan untuk tabel berelasi, lebih stabil.
  • Hindari MyISAM, pernah crash.

Jenis key

KeyArtiCatatan
Natural keyKolom unik yang bermakna bisnis (NIK, NIP)Jangan jadi PK. Tambahkan id sebagai PK, nip sebagai unique
Technical keyInput unik dari userPakai constraint unique
Surrogate keyKode yang dibuat sistemAuto increment termasuk surrogate key

Hindari composite key berlebihan. Jika FK memakai lebih dari 1 kolom, lebih baik pakai surrogate key.

Kolom key, domain model, dan histori

Kolom key

PK bernama id. Relasi bernama namatable_id, dengan aksi restrict atau cascade.

Domain model

Kurangi 1 tabel generik untuk banyak jenis data karena berisiko lambat. Simpan tipe atau status sebagai id.

Data historis

Untuk data berelasi yang butuh histori, simpan langsung nilainya.

Buat kondisi sejelas mungkin

Hindari angka mentah di kondisi. Jadikan constant dan beri nama yang jelas.

// Kurang jelas
if ($kode == 1) { ... }

// Lebih jelas
const STATUS_LUNAS = 1;
if ($kode == STATUS_LUNAS) { ... }

Tambahan: jika vibe coding

  • Pastikan prompt sesuai proses bisnis (probis).
  • Tulis prompt sedetail mungkin.
  • Gunakan format markdown supaya hemat token.

Checklist review

  • Nama variabel dan fungsi jelas
  • Tidak ada kode berulang
  • Token API dipakai dan .env di-ignore
  • File tidak terlalu panjang
  • README sudah diperbarui
  • Struktur DB sesuai standar JMC
  • Kondisi memakai constant, bukan angka mentah