ویرگول
ورودثبت نام
حسین عابدی
حسین عابدیسلام من حسین عابدی هستم یه علاقه مند به فعالیت در حوزه وب و برنامه نویسی. مدتیه تصمیم گرفتم تجربیات و دل نوشته های خودم رو با شما به اشتراک بذارم. امیدوارم مطالبی که میذارم براتون مفید باشه :)
حسین عابدی
حسین عابدی
خواندن ۳ دقیقه·۴ ماه پیش

معماری Clean Code؛ هنر ساخت کدی که نفس می‌کشد!

Clean Code Architecture
Clean Code Architecture

در دنیای توسعه نرم‌افزار، بزرگ‌ترین کابوس یک برنامه‌نویس کدهای شلخته و سخت‌فهم است؛ همان کدهایی که بعد از چند ماه حتی نویسنده‌اش هم متوجه منطقشان نمی‌شود!

اینجاست که Clean Code (کد تمیز) وارد می‌شود. Clean Code فقط یک اصطلاح نیست، بلکه سبکی از تفکر و معماری نرم‌افزار است که باعث می‌شود برنامه‌ها:

  • خوانا باشند،

  • قابل تغییر و توسعه باشند،

  • و تست‌پذیری بالا داشته باشند.

حالا بیاییم ۵ اصل کلیدی این معماری را با مثال‌های ملموس بررسی کنیم:

1️⃣ خوانایی (Readability)؛ کدی برای انسان‌ها، نه کامپیوتر

کدی که فقط برای اجرای کامپیوتر نوشته شود، مثل نامه‌ای است که با رمز نوشته شده؛ خواندنش برای بقیه سخت است.
در Clean Code، نام‌ها، ساختارها و توضیحات باید خودتوضیح باشند.

🔹 مثال بد:

function c(n, m) { return n * 60 + m; }

🔹 مثال خوب:

function convertHoursToMinutes(hours, minutes) { return hours * 60 + minutes; }

وقتی کسی مثال دوم را می‌بیند، بدون هیچ کامنتی متوجه می‌شود تابع چه کاری انجام می‌دهد.

2️⃣ توابع کوچک و هدفمند (Small & Purposeful Functions)

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

🔹 مثال بد:

def process_user(data): # ثبت کاربر # ارسال ایمیل خوشامد # ثبت گزارش در لاگ

🔹 مثال خوب:

def register_user(data): ... def send_welcome_email(user): ... def log_registration(user): ...

این ساختار هم تست کردن را ساده‌تر می‌کند، هم خواندن را 😊

3️⃣ کاهش وابستگی‌ها و افزایش انسجام (Low Coupling & High Cohesion)

یک برنامه خوب مثل یک شهر منظم است؛ هر بخش کار خودش را می‌کند و اگر یک خیابان خراب شود، کل شهر فلج نمی‌شود.

در Clean Code، هر کلاس یا ماژول باید یک مسئولیت مشخص داشته باشد و تا حد امکان کمترین وابستگی را به بخش‌های دیگر داشته باشد.

🔹 مثال ملموس:

  • اگر یک کلاس هم وظیفه ثبت کاربر را داشته باشد، هم ارسال ایمیل را، هم تولید فاکتور را، این یعنی وابستگی زیاد.

  • اگر هرکدام این وظایف در یک ماژول جدا باشد، تغییر ایمیل یا فاکتور هیچ اثری روی ثبت کاربر ندارد.

4️⃣ تست‌پذیری (Testability)؛ پیشگیری بهتر از درمان

کدی که تمیز نوشته شود، به راحتی می‌توان برایش تست خودکار نوشت. کد شلخته مثل یک دستگاه پیچیده بدون نقشه است؛ هر تغییری ممکن است چیزی را خراب کند.

🔹 مثال:
تابعی که ۴ تا وظیفه انجام می‌دهد را نمی‌توان راحت تست کرد. اما اگر همان وظایف در ۴ تابع کوچک باشد، هر کدام را جدا می‌شود Unit Test کرد. این یعنی پیدا کردن سریع‌تر باگ‌ها و تغییر راحت‌تر بدون ترس از خراب شدن بخش‌های دیگر.

5️⃣ اصل پرهیز از تکرار (DRY Principle)؛ دشمن نامرئی زمان شما

تکرار کد مثل تکرار یک اشتباه است؛ هر بار که منطق یکسان را در چند جا کپی کنید، برای هر تغییر باید چند جا را اصلاح کنید.

🔹 مثال بد:

$totalPrice = $price + $price * 0.09; // محاسبه مالیات ... $finalPrice = $price + $price * 0.09; // محاسبه مالیات دوباره

🔹 مثال خوب:

function addTax($price) { return $price + $price * 0.09; } $totalPrice = addTax($price); $finalPrice = addTax($price);

حالا اگر نرخ مالیات تغییر کرد، فقط یکجا باید تغییرش دهید.

🔎 نتیجه‌گیری

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

کد تمیز مثل یک کتابخانه منظم است؛ هر چیزی سر جای خودش است و پیدا کردنش آسان. نتیجه:

  • توسعه سریع‌تر

  • باگ کمتر

  • رضایت بیشتر تیم و مشتری

در نهایت همیشه به یاد داشته باش:

کد تمیز یعنی نرم‌افزاری که امروز کار می‌کند و فردا هم رشد می‌کند.

clean codeکلین کد
۳
۰
حسین عابدی
حسین عابدی
سلام من حسین عابدی هستم یه علاقه مند به فعالیت در حوزه وب و برنامه نویسی. مدتیه تصمیم گرفتم تجربیات و دل نوشته های خودم رو با شما به اشتراک بذارم. امیدوارم مطالبی که میذارم براتون مفید باشه :)
شاید از این پست‌ها خوشتان بیاید