اصول برنامه نویسی بهینه: اصل DRY (خودت را تکرار نکن)

اصل 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 در لاراول، کدهای شما تمیزتر، قابل نگهداری‌تر و خواناتر خواهند شد و احتمال بروز خطاهای ناشی از تکرار کد کاهش می‌یابد.