اصل DRY (Don’t Repeat Yourself) یکی از اصول مهم در برنامهنویسی است که بر جلوگیری از تکرار کد و منطق تأکید دارد. هدف این اصل، کاهش تکرار کد و افزایش قابلیت نگهداری و خوانایی آن است. با رعایت اصل DRY، تغییرات در یک بخش از کد بهطور خودکار در تمام بخشهایی که از آن کد استفاده میکنند، اعمال میشود و این باعث کاهش خطاها و افزایش بهرهوری میشود.
در چارچوب لاراول، میتوان اصل DRY را به چندین روش مختلف پیادهسازی کرد:
1. استفاده از کلاسهای سرویس (Service Classes)
همانطور که قبلاً اشاره شد، منطق برنامه را در کلاسهای سرویس قرار دهید. این باعث میشود که منطق کسب و کار به صورت متمرکز در یک مکان قرار گیرد و بتوانید آن را به راحتی در کنترلرها و دیگر بخشهای برنامه مورد استفاده قرار دهید.
namespace App\Services;
class UserService
{
public function register(array $data)
{
// منطق ثبت نام کاربر
}
public function updateProfile(User $user, array $data)
{
// منطق به روزرسانی پروفایل کاربر
}
}
2. استفاده از کلاسهای درخواست (Form Request Classes)
قوانین اعتبارسنجی و مجوزها را در کلاسهای درخواست قرار دهید تا از تکرار آنها در کنترلرها جلوگیری شود.
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RegisterRequest extends FormRequest
{
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
];
}
}
روابط (Models and Relationships)
مدلها و روابط بین آنها را به درستی تعریف کنید تا از تکرار کدهای مرتبط با دسترسی به دادهها جلوگیری کنید.
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function posts()
{
return $this->hasMany(Post::class);
}
}
4. استفاده از Blade کامپوننتها و بخشها (Blade Components and Sections)
در قالبهای Blade از کامپوننتها و بخشها استفاده کنید تا از تکرار کدهای HTML جلوگیری شود.
<!-- resources/views/components/alert.blade.php -->
<div class="alert alert-{{ $type }}">
{{ $slot }}
</div>
<!-- استفاده در یک ویو -->
<x-alert type="error">
خطایی رخ داده است!
</x-alert>
5. استفاده از توابع و کلاسهای کمکی (Helper Functions and Classes)
توابع و کلاسهای کمکی تعریف کنید تا کدهای مشترک را در یک مکان قرار دهید و از تکرار آنها جلوگیری کنید.
// app/Helpers/helpers.php
if (! function_exists('formatDate')) {
function formatDate($date)
{
return \Carbon\Carbon::parse($date)->format('Y-m-d');
}
}
با رعایت این نکات و پیادهسازی اصل DRY در لاراول، کدهای شما تمیزتر، قابل نگهداریتر و خواناتر خواهند شد و احتمال بروز خطاهای ناشی از تکرار کد کاهش مییابد.