چگونه با DRY و KISS و YAGNI کدهای خوانا و بهینه بنویسیم؟

اصول DRY، KISS و YAGNI در برنامه‌نویسی به شما کمک می‌کنند تا کدهای تمیز، بهینه و قابل نگهداری بنویسید. در این مقاله، این سه اصل مهم را بررسی کرده و با مثال‌....

انتشار: , زمان مطالعه: 6 دقیقه
چگونه با DRY و KISS و YAGNI کدهای خوانا و بهینه بنویسیم؟
دسته بندی: برنامه نویسی تعداد بازدید: 81

در دنیای توسعه نرم‌افزار، نوشتن کدی که خوانا، کارآمد و قابل نگهداری باشد، امری حیاتی است. برنامه‌نویسان حرفه‌ای برای رسیدن به این هدف، از اصول مختلفی پیروی می‌کنند. سه اصل بسیار مهم که در بهینه‌سازی کد نقش دارند، DRY، KISS و YAGNI هستند. این اصول به کاهش پیچیدگی، افزایش سرعت توسعه و بهبود تجربه نگهداری نرم‌افزار کمک می‌کنند.

✔️ DRY (Don't Repeat Yourself) - خودت را تکرار نکن
✔️ KISS (Keep It Simple, Stupid) - ساده نگه‌دار
✔️ YAGNI (You Ain't Gonna Need It) - چیزی را که نیاز نداری، اضافه نکن

در این مقاله، به بررسی دقیق این اصول می‌پردازیم و نشان می‌دهیم که چگونه می‌توان با رعایت آنها، کدهای تمیزتر و بهینه‌تری نوشت.

1. اصل DRY (Don't Repeat Yourself) - از تکرار جلوگیری کن

اصل DRY بیان می‌کند که نباید کدهای مشابه را در بخش‌های مختلف یک پروژه تکرار کرد. به‌جای این کار، منطق‌های تکراری باید در یک مکان قرار گیرند تا بتوان در هر جای موردنیاز از آنها استفاده کرد.

چرا رعایت اصل DRY مهم است؟

✅ کاهش حجم کد و افزایش خوانایی
✅ کاهش خطاها و باگ‌ها؛ زیرا تغییرات فقط در یک بخش اعمال می‌شوند
✅ افزایش قابلیت نگهداری (Maintainability)

نمونه کد بدون رعایت اصل DRY

<?php
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email                     : [email protected]

// Calculating the area of two rectangles (repetitive code)
$length1 = 10;
$width1 = 5;
$area1 = $length1 * $width1;
echo "Rectangle 1 Area: $area1 <br>";

$length2 = 8;
$width2 = 4;
$area2 = $length2 * $width2;
echo "Rectangle 2 Area: $area2 <br>";
?>

در این مثال، محاسبه مساحت دو مستطیل به‌صورت دستی انجام شده و کدها تکرار شده‌اند. حالا بیایید این مشکل را با رعایت اصل DRY حل کنیم.

نمونه کد با رعایت اصل DRY

<?php
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email                     : [email protected]

// Function to calculate the area of a rectangle
function calculateArea($length, $width) {
    return $length * $width;
}

echo "Rectangle 1 Area: " . calculateArea(10, 5) . "<br>";
echo "Rectangle 2 Area: " . calculateArea(8, 4) . "<br>";
?>

با تعریف یک تابع مجزا، تکرار در کد حذف شده و در صورت نیاز به تغییر، فقط لازم است تابع را ویرایش کنیم.

2. اصل KISS (Keep It Simple, Stupid) - ساده نگه‌دار

اصل KISS بیان می‌کند که کدها باید تا حد امکان ساده و خوانا باشند. پیچیدگی غیرضروری باعث کاهش بهره‌وری، افزایش زمان دیباگ و کاهش سرعت توسعه می‌شود. هدف از این اصل این است که برنامه‌نویسان بدون نیاز به درک جزئیات پیچیده، بتوانند به‌راحتی با کد کار کنند.

چرا رعایت اصل KISS مهم است؟

افزایش خوانایی و درک کد
کاهش احتمال بروز خطا
دیباگ و تست راحت‌تر

نمونه کد بدون رعایت اصل KISS

<?php
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email                     : [email protected]

// Checking if a number is even (complex and unnecessary code)
function isEven($num) {
    if ($num % 2 == 0) {
        return true;
    } else {
        return false;
    }
}
?>

کد بالا بیش‌ازحد پیچیده است، زیرا نیاز به if و else نیست و می‌توان آن را ساده‌تر نوشت.

نمونه کد با رعایت اصل KISS

<?php
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email                     : [email protected]

// Simpler and more readable code
function isEven($num) {
    return $num % 2 == 0;
}
?>

با این تغییر، خوانایی و سادگی کد افزایش‌یافته و نتیجه مشابهی ارائه می‌شود.

3. اصل YAGNI (You Ain't Gonna Need It) - چیزی که نیاز نداری را اضافه نکن

اصل YAGNI بیان می‌کند که نباید قابلیت‌ها یا پیچیدگی‌هایی را پیاده‌سازی کنیم که در حال حاضر نیازی به آن‌ها نداریم. بسیاری از توسعه‌دهندگان هنگام کدنویسی، ویژگی‌هایی را اضافه می‌کنند که ممکن است هرگز مورد استفاده قرار نگیرند. این کار علاوه بر افزایش حجم کد، پیچیدگی غیرضروری ایجاد می‌کند.

چرا رعایت اصل YAGNI مهم است؟

✅ کاهش هزینه‌های توسعه و نگهداری
✅ تمرکز بر نیازهای واقعی پروژه
✅ افزایش کارایی کد و کاهش پیچیدگی

نمونه کد بدون رعایت اصل YAGNI

<?php
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email                     : [email protected]

// Adding an unnecessary caching system
class CacheManager {
    private $cache = [];

    public function set($key, $value) {
        $this->cache[$key] = $value;
    }

    public function get($key) {
        return isset($this->cache[$key]) ? $this->cache[$key] : null;
    }
}

$cache = new CacheManager();
$cache->set("username", "Ebrahim");
echo $cache->get("username");
?>

در این مثال، یک سیستم کشینگ پیچیده ایجاد شده درحالی‌که نیازی به آن وجود ندارد. بهتر است از روش ساده‌تری استفاده کنیم.

نمونه کد با رعایت اصل YAGNI

<?php
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email                     : [email protected]

// Directly using an array to store data
$userData = ["username" => "Ebrahim"];
echo $userData["username"];
?>

این کد همان عملکرد را دارد، اما پیچیدگی غیرضروری را حذف کرده است.

رعایت اصول DRY، KISS و YAGNI در برنامه‌نویسی، به توسعه‌دهندگان کمک می‌کند تا کدهایی خوانا، ساده، بهینه و قابل نگهداری بنویسند.

✔️ DRY از تکرار جلوگیری می‌کند و موجب کاهش حجم کد و افزایش قابلیت نگهداری می‌شود.
✔️ KISS پیچیدگی را کاهش می‌دهد و باعث می‌شود کد ساده‌تر و خواناتر باشد.
✔️ YAGNI از پیاده‌سازی ویژگی‌های غیرضروری جلوگیری می‌کند و تمرکز را بر نیازهای واقعی پروژه نگه می‌دارد.

هر برنامه‌نویسی باید هنگام توسعه کدهای خود از خود بپرسد:


✔️ آیا این کد را می‌توان خلاصه‌تر نوشت؟ (DRY)
✔️ آیا این کد بیش‌ازحد پیچیده است؟ (KISS)
✔️ آیا این ویژگی در حال حاضر موردنیاز است؟ (YAGNI)

با رعایت این اصول، می‌توان نرم‌افزارهای باکیفیت‌تر، سریع‌تر و کارآمدتری تولید کرد که هم توسعه‌دهندگان و هم کاربران نهایی از آن رضایت داشته باشند.


دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)

تعداد 2 دیدگاه ثبت شده
پویا دهقانی می گه: زمان ثبت: 1 ماه پیش

ممنون که این نکات مهم رو یادآوری کردید.

با اینکه php تا حالا کار نکردم اما کد های class و function  رو با چیزایی که داخل پایتون خونده بودم فهمیدم و این برام جالب بود که تنها چیزی که فرق داره بینشون syntax هست .

ابراهیم شفیعی در جواب پویا دهقانی می گه: زمان ثبت: 1 ماه پیش

سلام پویا جان . خواهش می کنم . خوشحال مطالب براتون کاربردی بوده . هر زمان سوالی دارید در همین بخش نظرات بگید بهتون کمک کنیم . 🌹