کدنویسی تمیز ( clean code ) در زبان پی اچ پی

کدنویسی تمیز ( clean code ) در زبان پی اچ پی

بروزرسانی : 4 ماه پیش

کدنویسی تمیز یا کلین کد چیست ؟ 

کدنویسی تمیز پایه ی توسعه ی نرم افزار خوب است، کدنویسی تمیز یا کلین کد یک نوع هنر است که هر برنامه نویسی باید آنرا بلد باشد تا کدهای نوشته شده خوانایی ، درک و نگهداری راحتی داشته باشد. در این مجله ی آموزشی به چیستی کدنویسی تمیز ( clean code )، اهمیت آن در برنامه نویسی و همچنین کدنویسی تمیز با زبان برنامه نویسی PHP به همراه نمونه ی کد تمیز و کثیف میپردازیم. پیشنهاد میکنیم این مجله ی آموزشی که حاوی نکات فراوانی برای یادگیری است را تا انتها با حوصله مطالعه کنید اما اگر وقت کافی برای مطالعه ندارید میتوانید از ویدیو زیر نیز استفاده کنید : 

 

 

بعنوان یک برنامه نویس PHP ما موظف هستیم که کدهای تمیزی بنویسیم نه تنها به این خاطر که این روش کاربردی است بلکه به این خاطر که نگهداری کدهای ما نیز راحت تر خواهد شد، نوشتن کدهای تمیز ضروری است چون مشکلات فنی را کاهش میدهد، کیفیت کدها را بهبود میبخشد و مشارکت در پروژه ی ما توسط دیگران را افزایش میدهد، فرض کنید در آینده تصمیم بگیرید برنامه نویسان جدیدی را جذب کنید تا در کنار شما پروژه را پیش ببرند اگر آن برنامه نویسان جدید با کدهای کثیف روبرو شوند آیا میتوانند به شما کمک کنند؟ در این مجله به بهترین و اصولی ترین روش های کدنویسی تمیز در در زبان پی اچ پی خواهیم پرداخت.

بطور اجمالی به ۸ اصل خواهیم پرداخت که هر کدام از آنها نیاز به تمرین و تکرار فراوان دارد، این اصل ها را بعنوان اصول برنامه نویسی تمیز با php تمرین کنید و سعی کنید همیشه درکدنویسی پی اچ پی از آنها استفاده کنید.

 

اصل ۱ - کُد باید خوانایی آسانی داشته باشد.

اولین اصل در کدنویسی تمیز با پی اچ پی نوشتن کدهایی است که به راحتی خوانده شود یعنی کدهای ما بی معنی و نامفهوم نباشد. از آنجایی که کدهای نوشته شده ممکن است توسط برنامه نویسی بغیر از نویسنده ی آن بررسی شود پس سعی کنید در نام گذاری ها دقت کنید. برای متغیرها ، توابع ، کلاس ها و ... نام های با معنی انتخاب کنید تا هم کدهای شما تمیز باشد و هم خواننده سریعا درک کنند که چه اتفاقی میوفتد. دو نمونه ی کدنویسی کثیف و تمیز در این باره :‌

کدنویسی کثیف اصل ۱ : 

function x($a){$b=0;for($i=0;$i<count($a);$i++){$b+=$a[$i];}return $b;}

کدنویسی تمیز اصل ۱ :‌

function sumArray($numbers) {
    $total = 0;
    for ($i = 0; $i < count($numbers); $i++) {
        $total += $numbers[$i];
    }
    return $total;
}

 

اصل ۲ - کُد باید DRY باشد.

اصل DRY که مخفف Don’t Repeat Yourself است به این معنی است که شما نباید کد اضافی در پروژه ی خود داشته باشید. اگر متوجه شدید که در حال کپی و پیست تکه کدی هستید باید آنرا به درون یک تابع یا کلاس با قابلیت استفاده مجدد ببرید. این کار باعث نگهداری آسان از کدها و کاهش خطاهای برنامه نویسی میشود. نمونه کد تمیز و کثیف در این باره : 

کدنویسی کثیف اصل ۲ : 

function getFullName($firstName, $lastName) {
    echo $firstName . ' ' . $lastName;
}

function getUserName($firstName, $lastName) {
    echo substr($firstName, 0, 1) . $lastName;
}

کدنویسی تمیز اصل ۲ :‌

function getFullName($firstName, $lastName) {
    return $firstName . ' ' . $lastName;
}

function getUserName($firstName, $lastName) {
    return substr($firstName, 0, 1) . $lastName;
}

 

اصل ۳ :‌ کُد باید ماژولار باشد.

ماژولاریتی سنگ بنای کدنویسی تمیز یا کلین است. در زبان برنامه نویسی پی اچ پی ماژولار بودن یعنی شکستن کدها به قطعه های کوچک با قابلیت استفاده مجدد که به آنها ماژول یا توابع گفته میشود. هر ماژول باید دارای مسئولیتی واحد و مستقل از بقیه کدها باشد. این کار نه تنها خوانایی کد را بالا میبرد بلکه نگهداری و تست آنرا نیز راحت تر میکند. نمونه کد تمیز و کثیف برای اصل ۳ :‌

کدنویسی کثیف اصل ۳ : 

function userRegistration($firstName, $lastName, $email, $password) {
    // Validate input
    if (empty($firstName) || empty($lastName) || empty($email) || empty($password)) {
        return false;
    }
    // Create user
    $user = new User();
    $user->firstName = $firstName;
    $user->lastName = $lastName;
    $user->email = $email;
    $user->password = $password;
    // Save user
    $user->save();
    // Send welcome email
    $mailer = new Mailer();
    $mailer->sendWelcomeEmail($email);
    return true;
}

کدنویسی تمیز اصل ۳ :‌

function validateInput($firstName, $lastName, $email, $password) {
    return !empty($firstName) && !empty($lastName) && !empty($email) && !empty($password);
}

function createUser($firstName, $lastName, $email, $password) {
    $user = new User();
    $user->firstName = $firstName;
    $user->lastName = $lastName;
    $user->email = $email;
    $user->password = $password;
    return $user->save();
}

function sendWelcomeEmail($email) {
    $mailer = new Mailer();
    $mailer->sendWelcomeEmail($email);
}

function userRegistration($firstName, $lastName, $email, $password) {
    if (validateInput($firstName, $lastName, $email, $password)) {
        if (createUser($firstName, $lastName, $email, $password)) {
            sendWelcomeEmail($email);
            return true;
        }
    }
    return false;
}

 

اصل ۴ : کُدها باید کارآمد باشند.

نوشتن کد کارآمد بسیار مهم است و نه تنها باعث میشود سرعت و عملکرد شما افزایش پیدا کند بلکه استفاده بهینه از منابع نیز میشود. در زبان PHP نوشتن کدهای کارآمد ( بهینه ) شامل موارد زیر است :‌

  1. درک میزان هزینه ی یک عملیات 
  2. اجتناب از محاسبات غیرضروری
  3. استفاده از ساختار داده مناسب و الگوریتم های مناسب برای عملیات مختلف

توجه داشته باشید که گاهی بهینه سازی زیاد ( افزایش پرفرمنس ) باعث خیلی از مشکلات است و از بهینه سازی های غیرضروری اجتناب کنید. نمونه کدها برای اصل ۴ :

کدنویسی کثیف اصل ۴ : 

function findElement($array, $element) {
    for ($i = 0; $i < count($array); $i++) {
        if ($array[$i] === $element) {
            return true;
        }
    }
    return false;

کدنویسی تمیز اصل ۴ : 

function findElement($array, $element) {
    return in_array($element, $array);
}

 

اصل ۵ : کدها باید قوی باشد و خطاها را بخوبی مدیریت کنید.

کُد قوی کدی است که بتواند ورودی ها یا موقعیت های غیرمنتظره را پیش بینی کند و رفتار مناسبی نسبت به انها داشته باشد. در زبان php این کار ها میتواند شامل عملیاتی مثل اعتبار سنجی ورودی ها، مدیریت exception ها و انتشار پیام های مناسب برای خطاها باشد. نمونه کد برای اصل ۵ :‌

کدنویسی کثیف اصل ۵‌ : 

function divide($num1, $num2) {
    return $num1 / $num2;
}

کدنویسی تمیز اصل ۵ :‌

function divide($num1, $num2) {
    if ($num2 == 0) {
        throw new InvalidArgumentException("Cannot divide by zero.");
    }
    return $num1 / $num2;
}

 

اصل ۶ : کدها باید قابل تست باشند.

قابل تست بودن کدهایی که مینویسیم یکی از نکات حیاتی دیگر است که باعث میشود کدهای ما تمیز باشد. کدهای ما باید طوری نوشته شده باشد که امکان تست اتوماتیک مثل unit test را مقدور کند به این معنی که ورودی و خروجی توابع و کلاس های ما باید واضح باشد، همچنین از وابستگی های مخفی اجتناب کنید و مطمئن شوید که یک تکه از کد یک کار واحدی را بخوبی انجام میدهد. نمونه کد برای اصل ۶ : 

کدنویسی کثیف اصل ۶ :‌

class Order {
    public function calculateTotal() {
        $total = 0;
        foreach ($this->items as $item) {
            $total += $item->price;
        }
        $this->applyDiscount($total);
        return $total;
    }
    private function applyDiscount(&$total) {
        $total *= 0.9;
    }
}

کدنویسی تمیز اصل ۶ :‌

class Order {
    public function calculateTotal() {
        $total = 0;
        foreach ($this->items as $item) {
            $total += $item->price;
        }
        return $this->applyDiscount($total);
    }
    private function applyDiscount($total) {
        return $total * 0.9;
    }
}

 

اصل ۷ :‌ باید از کدنویسی استاندارد پیروی کنید.

پیروی کردن از استاندارد های کدنویسی باعث میشود کدهای زیبا و خوانایی داشته باشید و همچنین باعث میشود بسیاری از خطاها رخ ندهد. برای زبان برنامه نویسی php استانداردی که معمولا استفاده میشود استاندارد کدنویسی PSR-2 است که مواردی مانند تورفتگی ها ، فاصله گذاری ها ، نامگذاری ها و ... را پوشش میدهد. نمونه کد اصل ۷ :‌

کدنویسی کثیف اصل ۷ :‌

class myClass {
    private $myProperty;

    function myFunction() {
        // ...
    }
}

کدنویسی کثیف اصل ۷ : 

class MyClass {
    private $myProperty;

    public function myFunction() {
        // ...
    }
}

 

اصل ۸ : کامنت گذاری و مستندات نویسی فراموش نشود.

اگر یادتان باشد بالاتر توضیح دادیم کد خوب کدی است که بخودی خود خوانا باشد و نیاز به راهنمای خاصی نداشته باشد ولی همچنان کامنت گذاری و مستندات نویسی بسیار مهم است مخصوصا وقتی پروژه بزرگ میشود و الگوریتم های پیچیده ای دارد یا مربوط به یک پروژه ی تجاری است بهتر است از کامنت گذاری های صحیح استفاده  کنید. کامنت ها باید توضیح بدهند که چرا کاری انجام میشود نه اینکه چه کاری انجام میشود. علاوه بر کامنت گذاری ، بلوک های PHPDoc می‌توانند برای ارائه توضیحات ساختاریافته برای کلاس‌ها، متدها و متغیرها استفاده شوند. نمونه کد برای اصل ۸ :

کدنویسی کثیف اصل ۸ :

// Adds 1 to the number
function addOne($num) {
    return $num + 1;
}

کدنویسی تمیز اصل ۸ : 

/**
 * Increments the given number by one.
 *
 * @param int $num The number to increment.
 * @return int The incremented number.
 */
function increment($num) {
    return $num + 1;
}

 

نتیجه گیری نهایی : 

برای نوشتن کد تمیز یا clean code در PHP، رعایت اصولی که در این مجله گفته شده، مهم است : خوانایی بالا ، DRY، ماژولار بودن، کارآمدی ، استحکام کدها ، تست‌پذیری، استاندارد نویسی و مستندسازی. با رعایت این اصول شما میتوانید مطمئن شوید که کدهای شما قابل فهم، نگهداری و توسعه ی آسان است.اگر کار تیمی باشد ورود برنامه نویسان جدید به پروژه آسانتر میشود و همچنین مشکلات فنی و خطاها را بسیار کاهش میدهد که این خود باعث صرفه جویی در وقت برنامه نویس میشود.

همچنین به یاد داشته باشید که همه چیز یادگیری اصول کدنویسی تمیز نیست و شما باید خلاقیت خود را نیز به کار بگیرید و بطور مستمر روی کدنویسی تمیز و خوانای خود کار کنید تا بعد از مدتی دست شما به نوشتن کدهای تمیز عادت کرده باشد. هدف نهایی ما نوشتن کدهای تمیز و زیباست که به راحتی توسط همه ی برنامه نویسان درک شود و این کمی زمان میبرد و با تمرین به آن خواهید رسید.

در واقع هر برنامه نویس با نوشتن کدهای تمیز هم به خود احترام میگذارد و هم به دیگر برنامه نویسان و همچنین به زمان و کار خودش ارزش قائل است و همه ی اینها از دید دیگران مهم است.

در هر صورت با رعایت و تمرین اصول بالا شما میتوانید به یک کدنویس php خوب تبدیل شوید هرچند موارد ذکر شده به php محدود نمیشود و شما میتوانید از اصول کدنویسی تمیز که در بالا آموزش دادیم در دیگر زبان های برنامه نویسی نیز استفاده کنید.فرقی ندارد پی اچ پی کار میکنید یا جاوا ، پایتون کار میکنید یا کاتلین و یا هر زبان دیگری ، همیشه برای کدنویسی تمیز یا clean code تلاش کنید.

لینک کوتاه این مقاله : https://avasam.ir/post/418
این سیستم برپایه ی علاقه مندی شما یک دوره ی مناسب به شما پیشنهاد میدهد
مرا بسوی بهترین دوره ی آموزشی که برای من مناسب است هدایت کن 🤖
برای استفاده ی دیگران و حمایت از ما در جامعه های زیر به اشتراک بگذارید

.:: نظرهای کاربران ::.
سامان / 2 ماه پیش

سلام خیلی عالی و کاربردی بود ممنون از آموزش های خوب شما 

دوره ی آموزش پروژه محور ساخت کافه بازار دوره ی آموزش پروژه محور ساخت فروشگاه دیجیکالا آموزش لاراول دوره ی آموزش ویو جی اس