کدی تمیز است که به راحتی توسط همه ی اعضای تیم قابل درک باشد. کد تمیز میتواند توسط توسعه دهنده ای به غیر از نویسنده ی آن، خوانده و توسعه داده شود. خوانایی، قابلیت نگهداری، تغییر و توسعه پذیری کد، تنها زمانی امکان پذیر است که شما درک درستی از نحوه ی کار کد پیدا کنید.
- از قوانین استاندارد (مثل: نام گذاری کلاس ها و توابع، میزان فرورفتگی یا ایندنتیشن و ...) پیروی کنید. (Standard Conventions)
- تا حد امکان پیچیدگی را در کد کاهش دهید. همیشه سادگی بهتر است. (قانون KISS)
- سورس کد را تمیز تر از زمانی که تحویل می گیرید، تحویل دهید. (قانون Boy Scout)
- همیشه به دنبال یافتن مشکلات و ایرادات در کد باشید. برای برطرف کردن آنها، علل اصلی و ریشه ای را شناسایی کنید. (قانون RCA)
- متغیر ها، ثابت ها و تمام داده های قابل تنظیم، باید در بالا ترین سطح انتزاع قرار داشته باشند. (Configurable Data At High Levels)
- به جای نقض کردن قانون open-closed، از ویژگی polymorphism استفاده کنید. (Replace Conditional With Polymorphism)
- م (Separate multi-threading code)
- از بیش از اندازه دادنِ آزادی عمل به توسعه دهنده های برنامه خود جلوگیری کنید. (Prevent Over-Configurability)
- به جای ساخت آبجکت (با استفاده از new)، از تزریق وابستگی استفاده کنید. (Dependency Injection)
- توابع و کلاس ها به جز کاری که انجام میدهند، نباید به جزئیات دیگری در کد دسترسی داشته باشند. (قانون LoD)
- توابع شما باید کوچک باشند. (Small)
- هر تابع باید فقط و فقط یک کار را انجام دهد. (Do one thing)
- نامی که برای هر تابع انتخاب میکنید باید به طور کامل، کاری که انجام میدهد را توصیف کند. (Use descriptive names)
- بهترین تابع، تابع نیلادیک (Niladic) ست. تابع شما باید کمترین آرگومان را دریافت کند. (Prefer fewer arguments)
- تابع شما نباید هیچ چیزی را که خارج از اسکوپ آن قرار دارد، تغییر دهد. (Have no side effects)
- همیشه سعی کنید همه چیز را در کد توضیح دهید اگر امکان پذیر نبود، آنگاه روی نوشتن یک کامنت خوب وقت بگذارید.
- از نوشتن کامنتی که هیچ توضیح بیشتری از کد نمیدهد (کامنت زائد) خودداری کنید. مثل: (
i++; // increment i
) - از نوشتن کامنتی برای توجه بیشتر، برای چیزی که کاملا واضح است، خودداری کنید. مثل: (
end of function // {
) - کامنت شما نیاز به بسته بندی ندارد! از
{ }
,[ ]
,( )
استفاده نکنید. - کد را کامنت نکنید! فقط حذف ش کنید.
- از کامنت به عنوان توضیح بیشتر در مورد قصد و هدف خود استفاده کنید.
- از کامنت به عنوان شفاف کننده کد استفاده کنید.
- به عنوان یک هشدار، در مورد عواقب تغییر استفاده کنید.
- هر تست (بهتر است) فقط یک assertion داشته باشد. (One Assertion Per Test)
- از قوانین F.I.R.S.T پیروی کنید.
- تست های شما باید به سرعت اجرا شوند، حتی اگر 1000 تا باشد. (Fast)
- تست های شما باید ایزوله و مستقل باشند و هیچ چیزی اعم از سیستم عامل، متغیر های محیطی، کدهای برنامه نویس دیگر، نباید در نحوه ی کار آنها اختلال ایجاد کند. (Isolated/Independent)
- تست های شما باید قطعی و تکرار پذیر باشند، متغیر های آنها نباید در محیط های مختلف تغییر کند. (Repeatable)
- (Self-validating)
- تست های شما باید به سادگی خوانده و درک شوند. (Readability)
- هیچگاه error handling را با کد logic ترکیب نکنید.
- از Exception ها به جای بازگرداندن error code استفاده کنید.
- هیچگاه null ریترن نکنید یا به تابعی به عنوان پارامتر، null ارسال نکنید.
- همیشه Exception را با یک توضیح کامل از خطا ارائه کنید.