مقاله

نام‌گذاری، توابع کوتاه، DRY، KISS و refactor عملی — نه فلسفه کتاب، بلکه قوانین روزمره در پروژه PHP.

Clean Code در PHP — اصول کد تمیز برای توسعه‌دهنده Laravel

Clean Code در PHP — اصول کد تمیز برای توسعه‌دهنده Laravel

Clean Code یعنی کدی که شش ماه بعد خودتان بدون ترس بازش کنید — نه کدی که فقط در مصاحبه خوب به نظر می‌رسد. در PHP و Laravel با حجم بالای CRUD، الگوهای framework و deadline، اصول ساده اگر رعایت شوند بیشترین بازده را دارند.

نام‌گذاری معنادار

متغیر $d یا $data2 هزینه ذهنی می‌سازد. نام باید intent را بگوید:

// بد
function calc($a, $b) { return $a * $b * 0.09; }

// خوب
function calculateVatAmount(int $subtotal, float $vatRate): int
{
    return (int) round($subtotal * $vatRate);
}

boolean با is/has/can شروع شود: $isPublished، $hasPermission.

توابع کوتاه — یک سطح abstraction

قانون عملی: اگر برای فهمیدن تابع باید scroll کنید، بخش‌بندی کنید. Controller action ایده‌آل زیر ۱۵ خط — منطق در Action یا Service.

public function store(StorePostRequest $request, CreatePostAction $action)
{
    $post = $action->handle($request->toDto(), $request->user());
    return new PostResource($post);
}

DRY — اما نه hysterical

تکرار واقعی (همان bug در سه جا) را extract کنید. دو loop شبیه که آینده diverge می‌شوند — تکرار OK (AHA principle).

Magic number و string

// بد
if ($order->status === 3) { ... }

// خوب — enum PHP 8.1+
if ($order->status === OrderStatus::Shipped) { ... }

کامنت درست

کامنت «چرا» نه «چه». اگر کد نیاز به توضیح «چه» دارد، نام یا ساختار را عوض کنید. exception: regex پیچیده، workaround موقت با ticket number.

Error handling صریح

catch خالی ممنوع. exception معنادار — OrderNotFoundException بهتر از Exception generic.

Type hints و return type

PHP 8.3: typed property، union، readonly — compiler-as-documentation. PHP 8.3.

فرمت یکسان

Laravel Pint یا PHP-CS-Fixer — بحث style در PR حذف شود. PSR-12 baseline.

Code smellهای رایج Laravel

  • God Controller — همه logic در یک action
  • Fat Model با ۵۰۰ خط unrelated
  • Helper global برای هر چیز
  • config('x.y') پراکنده بدون constant

SOLID تکمیل‌کننده Clean Code است.

Refactor امن

  1. تست بنویسید یا feature test موجود
  2. یک smell — یک commit
  3. رفتار عوض نشود — فقط ساختار

Feature test شبکه امن refactor.

جمع‌بندی

Clean Code habit روزانه است. بعدی: DTO، Value Object. معماری: لایه‌ای.

code review و refactor