Skip to content

Instantly share code, notes, and snippets.

@alisalehi1380
Last active June 12, 2024 21:33
Show Gist options
  • Save alisalehi1380/83b61b63e4ebb07b300a88e5c78e7a93 to your computer and use it in GitHub Desktop.
Save alisalehi1380/83b61b63e4ebb07b300a88e5c78e7a93 to your computer and use it in GitHub Desktop.
نکات_کلیدی_کتاب_کلین_کد
کدی تمیز است که به راحتی توسط همه ی اعضای تیم قابل درک باشد. کد تمیز میتواند توسط توسعه دهنده ای به غیر از نویسنده ی آن، خوانده و توسعه داده شود. خوانایی، قابلیت نگهداری، تغییر و توسعه پذیری کد، تنها زمانی امکان پذیر است که شما درک درستی از نحوه ی کار کد پیدا کنید.

قوانین عمومی

  1. از قوانین استاندارد (مثل: نام گذاری کلاس ها و توابع، میزان فرورفتگی یا ایندنتیشن و ...) پیروی کنید. (Standard Conventions)
  2. تا حد امکان پیچیدگی را در کد کاهش دهید. همیشه سادگی بهتر است. (قانون KISS)
  3. سورس کد را تمیز تر از زمانی که تحویل می گیرید، تحویل دهید. (قانون Boy Scout)
  4. همیشه به دنبال یافتن مشکلات و ایرادات در کد باشید. برای برطرف کردن آنها، علل اصلی و ریشه ای را شناسایی کنید. (قانون RCA)

قوانین طراحی

  1. متغیر ها، ثابت ها و تمام داده های قابل تنظیم، باید در بالا ترین سطح انتزاع قرار داشته باشند. (Configurable Data At High Levels)
  2. به جای نقض کردن قانون open-closed، از ویژگی polymorphism استفاده کنید. (Replace Conditional With Polymorphism)
  3. م (Separate multi-threading code)
  4. از بیش از اندازه دادنِ آزادی عمل به توسعه دهنده های برنامه خود جلوگیری کنید. (Prevent Over-Configurability)
  5. به جای ساخت آبجکت (با استفاده از new)، از تزریق وابستگی استفاده کنید. (Dependency Injection)
  6. توابع و کلاس ها به جز کاری که انجام میدهند، نباید به جزئیات دیگری در کد دسترسی داشته باشند. (قانون LoD)

قوانین توابع

  1. توابع شما باید کوچک باشند. (Small)
  2. هر تابع باید فقط و فقط یک کار را انجام دهد. (Do one thing)
  3. نامی که برای هر تابع انتخاب میکنید باید به طور کامل، کاری که انجام میدهد را توصیف کند. (Use descriptive names)
  4. بهترین تابع، تابع نیلادیک (Niladic) ست. تابع شما باید کمترین آرگومان را دریافت کند. (Prefer fewer arguments)
  5. تابع شما نباید هیچ چیزی را که خارج از اسکوپ آن قرار دارد، تغییر دهد. (Have no side effects)

تست ها

  1. هر تست (بهتر است) فقط یک assertion داشته باشد. (One Assertion Per Test)
  2. از قوانین F.I.R.S.T پیروی کنید.
    1. تست های شما باید به سرعت اجرا شوند، حتی اگر 1000 تا باشد. (Fast)
    2. تست های شما باید ایزوله و مستقل باشند و هیچ چیزی اعم از سیستم عامل، متغیر های محیطی، کدهای برنامه نویس دیگر، نباید در نحوه ی کار آنها اختلال ایجاد کند. (Isolated/Independent)
    3. تست های شما باید قطعی و تکرار پذیر باشند، متغیر های آنها نباید در محیط های مختلف تغییر کند. (Repeatable)
    4. (Self-validating)
  3. تست های شما باید به سادگی خوانده و درک شوند. (Readability)

مشارکت در پروژه

لطفا به ریپوی Key points of clean code مراجعه فرمایید.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment