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 baik | Lebih baik |
|---|---|
| $d, $x, $tmp | $tanggalBayar, $totalTagihan |
| Semua logika di satu fungsi panjang | Logika dipisah ke helper class atau fungsi |
Hindari kode berulang
Kode yang sama di banyak tempat. Satu perubahan harus diubah berkali-kali dan mudah ada yang terlewat.
Buat helper, service, atau trait. Tulis sekali, pakai di banyak tempat.
Keamanan
- Interaksi antar API wajib memakai token.
- File
.envwajib 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
Wajib diperbarui setiap menambah fitur atau membuat aplikasi baru.
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
| Aturan | Contoh |
|---|---|
| Jelas, sesuai fungsi tabel | payment_history |
| Bahasa Inggris saja, istilah baku | customer |
| Singular, tanpa tambahan s | customer, bukan customers |
| lower_case dan snake_case | water_meter |
| Tanpa prefix atau awalan | user, bukan tbl_user |
| Singkat dan tidak ambigu | invoice |
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:
| Data | Tipe |
|---|---|
| PK dan FK | int |
| Jumlah barang | int |
| Nominal uang | decimal(20,2) |
| String | varchar atau text |
| Longitude dan latitude (umum di GIS) | float atau double |
Tipe data custom: perlu riset lebih lanjut.
Tipe data yang dihindari
enum
set
boolean
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
| Key | Arti | Catatan |
|---|---|---|
| Natural key | Kolom unik yang bermakna bisnis (NIK, NIP) | Jangan jadi PK. Tambahkan id sebagai PK, nip sebagai unique |
| Technical key | Input unik dari user | Pakai constraint unique |
| Surrogate key | Kode yang dibuat sistem | Auto 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
PK bernama id. Relasi bernama namatable_id, dengan aksi restrict atau cascade.
Kurangi 1 tabel generik untuk banyak jenis data karena berisiko lambat. Simpan tipe atau status sebagai id.
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