Skip to main content
IT Tutorial 03 July 2026 ~3 menit baca

Clean Code: Prinsip Menulis Kode yang Mudah Dipahami dan Dirawat

Kode yang bersih bukan hanya kode yang berfungsi, tapi kode yang bisa dibaca orang lain 6 bulan kemudian. Pelajari prinsip penamaan bermakna, fungsi tunggal, DRY, early return, dan menghindari magic numbers.

R
Reyzone Dev Team
Technical Writer ยท Reyzone

Apa Itu Clean Code?

Kode yang bersih bukan hanya kode yang berfungsi โ€” ini kode yang bisa dibaca dan dipahami oleh developer lain, atau dirimu sendiri, 6 bulan ke depan. Developer menghabiskan 70% waktu membaca kode dan hanya 30% menulisnya.

1. Penamaan yang Bermakna

// Buruk: nama tidak jelas
function calc($a, $b, $c) {
    return $a * $b * (1 - $c / 100);
}

// Bagus: nama menjelaskan niat
function calculateDiscountedTotal(
    float $unitPrice,
    int   $quantity,
    float $discountPercent
): float {
    return $unitPrice * $quantity * (1 - $discountPercent / 100);
}

2. Satu Fungsi, Satu Tanggung Jawab

// Bagus: pisahkan tanggung jawab
class UserRegistrationService
{
    public function register(RegisterUserDTO $dto): User
    {
        $this->validator->validate($dto);
        $user = $this->repository->create($dto);
        $this->onUserCreated($user);
        return $user;
    }

    private function onUserCreated(User $user): void
    {
        WelcomeEmailJob::dispatch($user);
        LoyaltyPoint::giveWelcomeBonus($user);
        Log::info("User registered", ["id" => $user->id]);
    }
}

3. Hindari Magic Numbers

// Buruk
if ($user->role === 2 && $score > 75) { }

// Bagus
if ($user->role === UserRole::PREMIUM_MEMBER
    && $score > DiscountPolicy::MIN_SCORE) { }

4. Prinsip DRY โ€” Jangan Ulangi Dirimu Sendiri

// DRY: gunakan query scope
// Di model User:
public function scopeActive($query) {
    return $query->where("status", "active")->where("verified", true);
}

$users  = User::active()->orderBy("name")->get();
$admins = User::active()->where("role", "admin")->get();

5. Fail Fast dengan Early Return

// Bagus: early return โ€” kode lebih datar dan mudah dibaca
function processPayment(Order $order): void
{
    if ($order === null)   throw new InvalidArgumentException("Order tidak valid");
    if ($order->total <= 0) throw new LogicException("Total harus lebih dari nol");
    if ($order->status !== "pending") throw new OrderException("Sudah diproses");

    $this->paymentGateway->charge($order);
}

Kesimpulan

Clean Code adalah keahlian yang diasah dari waktu ke waktu. Mulai dengan membiasakan diri memberi nama yang bermakna, menulis fungsi kecil yang fokus, dan selalu bertanya: apakah developer lain bisa memahami kode ini tanpa bantuan saya?

Bagikan Tutorial Ini:
Kembali ke Daftar Tutorial