کد تمیز (Clean Code) چیست؟

کد تمیز (clean code) چیست؟

این سوال‌هایی است که اغلب مبتدیان می‌پرسند، clean code یا همان کد تمیز چیست؟ چگونه کدهای تمیزی بنویسیم؟ آیا نوشتن comment برای داشتن کدهای تمیز الزامی است؟
برای پاسخ به سوال‌ها سعی داریم در این مقاله توضیح دهیم که کد تمیز (clean code) چیست و چگونه می‌توانیم کدهای تمیزی داشته باشیم. همچنین خوب است بدانیم اولین بار در کتاب clean code با نویسندگی Robert C. Martin به کدهای تمیز اشاره شد و از آن به بعد کدهای تمیز به‌عنوان یکی از اصول مهندسی نرم‌افزار شناخته می‌شود.

کد تمیز چیست؟

کد تمیز آن کدی است که قابلیت خوانایی بالایی دارد، مقیاس‌پذیر و قابل بازسازی است و همچنین می‌تواند عملکرد خودش را توضیح دهد. البته به‌طور کلی، کدهای تمیز را می‌توانیم کدهایی بدانیم که برای همه، حتی برای مبتدیان قابل درک هستند.

اهمیت نوشتن کدهای تمیز

مزیت‌های زیادی در نوشتن کدهای تمیز وجود دارد، برای مثال:

۱) زمانی که با یک تیم کار می‌کنید

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

۲) ساخت پروژه‌های متن‌باز

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

۳) زمانی‌که می‌خواهید کدهای خود را ریفکتور (refactor) کنید

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

چگونه کدهای تمیزی بنویسیم؟

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

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

نام‌گذاری معنادار متغیرها

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

let yydd=new Date().getFullYear();

مشخص نیست که متغیر فوق، چه مقداری را درون خود جای داده است و هر کسی در هر جایی از کد با این متغیر روبرو شود، نمی‌تواند تشخیص دهد که مقدار درون آن چیست و برای چه‌کاری از آن استفاده می‌شود. اما با استفاده از نام صحیح می‌توانید بدون اینکه به چیزی فکر کنید، تشخیص دهید که مقدار این متغیر چیست:

let fullYear=new Date().getFullYear();

استفاده از camelCase و حروف بزرگ برای جداسازی متغیرها از ثابت‌ها

یکی دیگر از نمونه‌های معمول در کدهای تمیز، variable structuring یا همان استفاده از یک استاندارد برای تعریف متغیرها است که به ساده شدن خوانایی کدها کمک می‌کند. برای مثال:

let dayofmonth=new Date().getDate();

const time=new Date().getTime();

هر زمان که فرد دیگری با این متغیرها روبرو شود، احتمالا نمی‌تواند variable یا constant بودن مقادیر را تشخیص دهد و در نتیجه درک کدهای شما دشوار می‌شود اما راه حل به این شکل است:

let dayOfMonth=new Date().getDate();

const TIME=new Date().getTime();

حال با کدهای بالا می‌توانید متوجه شوید که کدام یک variable و کدام constant است و به این شکل درک کدها آسان می‌شود. همچنین می‌توانید توضیحی را در ابتدای کدهای خود برای ساده‌تر کردن موضوع قرار دهید:

// standard variables are in camelCase, e.g ourTest;
// while constant variables are in uppercase e.g TEST

let dayOfMonth=new Date().getDate();

const TIME=new Date().getTime();

از پیچیدگی‌ها پرهیز کنید

ریفکتور کدهایی که API URL و API KEY را در برمی‌گیرند می‌تواند دشوار باشد اما می‌توانید این مقادیر را در متغیرهای مختلفی تعریف و در طول برنامه‌ی خود از آن‌ها استفاده کنید، مثلا به‌جای کد زیر:

async function fetchPexelsImages(){
let fetchImages=await fetch('https://api.pexels.com/v1/curated/',{
method:"GET",
headers:{
Authorization:xxxxxxxxxxxxxxxxxxxxxxxxx
}
});

}

از این کد استفاده کنید:

//declare variables
const PEXELSAPIURL="https://api.pexels.com/v1/curated/";
const PEXELSAPITOKEN="xxxxxxxxxxxxxxxxx";
async function fetchPexelsImages(){
let fetchImages=await fetch(`${PEXELSAPIURL}`,{
method:'GET',
headers:{
Authorization: PEXELSAPITOKEN
}
});
}

در کدهای بالا به‌راحتی می‌توانید API URL و API KEY را تغییر دهید و برنامه‌ی شما نیز بدون مشکل به کار خود ادامه دهد.

عملکردهای زیادی را در یک function قرار ندهید

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

function getUsersInfo(usersInfo){
usersInfo.forEach(userInfo => {
let checkedUserInfo=database.lookup(userInfo);
if(checkedUserInfo.isComplete()){
showUser(userInfo)
}
});
}

می‌توانید از این کدها استفاده کنید:

function getUsersInfo(usersInfo){
usersInfo.filter(isUserInfoComplete).forEach(showUser);

}
function isUserInfoComplete(userInfo){
let checkedUserInfo=database.lookup(userInfo);
return checkedUserInfo.isComplete();
}

اجتناب از موارد غیر ضروری

اجتناب از موارد غیرضروری، کد یا کدهای شما را به یک کد تمیز تبدیل می‌کند، اگر نام آبجکت یا کلاس شما معرف کارایی خود باشد پس لازم نیست تا از آن‌ها برای فراخوانی متغییر‌ها استفاده کنیم، برای مثال:

const PHONE={
phoneMake:"iphone",
phoneModel:"6s",
phoneColor:"gold"
};
function buildPhone(phone){
phone.phoneModel="7plus"
}

شما می‌توانید از کدهای زیر استفاده کنید:

const PHONE={
make:"iphone",
model:"6s",
color:"gold"
};
function buildPhone(phone){
phone.model="7plus"
}

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

منبع: https://stevecodes.hashnode.dev/what-is-clean-code-do-you-need-comments-to-write-clean-codes

برچسب‌ها:

خدمات رایگان لیارا

۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

هاست رایگان برای دیتابیس‌

دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

سرویس DNS رایگان

به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

۱۰۰ هزار تومان اعتبار اولیه

بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید و فقط برای بیش از آن هزینه پرداخت کنید. (به‌همراه دسترسی SMTP)

هاست رایگان برای انواع وبسایت

تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

توسعه‌دهندگان درباره‌ی ما چه می‌گویند

تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...

MohammadReza
liara testimonial
keikaavousi

بعد از بسته شدن @fandoghpaas و ناراحتی همه‌مون از اینکه یه سرویس خوب و صادق نمی‌تونه از پس هزینه‌ها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوت‌هایی داشت که کمی کار می‌خواست ولی تا الان کاملا راضی.

jadi
liara testimonial
jadi

یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.

Arch
liara testimonial
EbadiDev

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

Ali Najafi
liara testimonial
me_ali_najafi

یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@

Navid
liara testimonial
1navid

عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم

Amir H Shekari
liara testimonial
vanenshi