پرش به مطلب اصلی

Clean Code

Clean Code یعنی کدی که تغییر آن کم‌ریسک و خواندن آن سریع باشد.

اصول پایه

  • هر کلاس یک مسئولیت اصلی داشته باشد
  • لایه ورودی فقط orchestration انجام دهد
  • business logic داخل use case یا service قرار بگیرد
  • validation داخل لایه مشخص و قابل ردیابی انجام شود
  • duplication واقعی حذف شود
  • abstraction فقط وقتی اضافه شود که پیچیدگی واقعی را کم کند

Separation of Concerns

هر لایه باید مسئولیت خودش را انجام دهد:

  • Entry Point: دریافت input و فراخوانی use case
  • Validation Layer: اعتبارسنجی و کنترل اولیه ورودی
  • Use Case / Service: business rule و orchestration
  • Persistence Layer: query یا ذخیره‌سازی پیچیده
  • Domain Model: رفتار نزدیک به داده و invariantهای اصلی
  • Presentation Layer: rendering یا response mapping

DRY

تکرار کورکورانه بد است، اما حذف زودهنگام هر شباهت ظاهری هم می‌تواند کد را پیچیده کند.

قبل از استخراج abstraction بررسی کنید:

  • آیا دو بخش واقعا یک دلیل مشترک برای تغییر دارند؟
  • آیا abstraction نام واضح دارد؟
  • آیا خوانایی بهتر می‌شود؟

موارد ممنوع

  • methodهای بسیار بلند
  • شرط‌های تو در تو بیش از حد
  • لایه ورودی دارای query و business rule
  • helper برای business logic
  • کد dead یا کامنت‌شده