اصول کد پاک برای توسعه دهندگان جاوا اسکریپت و تایپ اسکریپت

در توسعه نرم افزار، نوشتن کدهای تمیز، قابل نگهداری و خوانا برای موفقیت هر پروژه بسیار مهم است. کدهایی که به خوبی سازماندهی شده، به راحتی قابل درک هستند و به راحتی قابل تغییر و توسعه هستند، نه تنها بهره وری توسعه دهندگان را بهبود می بخشند، بلکه احتمال ایجاد اشکالات و خطاها را نیز کاهش می دهند.
در این مقاله، برخی از بهترین روشها و تکنیکها برای نوشتن کدهای تمیز، قابل نگهداری و خواندنی در جاوا اسکریپت و تایپ اسکریپت را مورد بحث قرار میدهیم، اما توجه به این نکته مهم است که این اصول میتوانند برای سایر زبانهای برنامهنویسی نیز اعمال شوند.
از نام متغیرها و توابع معنی دار استفاده کنید
یکی از اصول اساسی نوشتن کد پاک استفاده از نام متغیرها و توابع معنی دار و توصیفی است. نامهایی که به خوبی انتخاب شدهاند میتوانند خوانایی و درک کد شما را تا حد زیادی افزایش دهند. وقتی کسی کد شما را می خواند، باید بتواند به سرعت هدف و عملکرد هر متغیر یا تابع را بدون نیاز به نظرات گسترده یا اسناد اضافی درک کند.
به عنوان مثال، بیایید قطعه کد زیر را در نظر بگیریم که از متغیرها و توابع با نام ضعیف استفاده می کند:
let a = 10;
let b = 20;
function f(x, y) {
let c = x + y;
if (c > a) {
return c - b;
} else {
return c + b;
}
}
console.log(f(a, b));
در این کد، مشخص نیست چه متغیرهایی آ و ب نمایندگی کند. به طور مشابه، تابع f یک نام غیر توصیفی دارد و از نامهای متغییر مرموز مانند ایکس، y، و ج. این امر درک عملکرد عملکرد و ارتباط آن با بقیه کدها را دشوار می کند.
برای بهبود خوانایی این کد، میتوانیم با استفاده از نامهای توصیفیتر متغیرها که هدف آنها را نشان میدهند، شروع کنیم. به عنوان مثال می توانیم نام خود را تغییر دهیم آ به آستانه و ب به انحراف برای انتقال بهتر معنی آنها:
let threshold = 10;
let offset = 20;
function f(x, y) {
let sum = x + y;
if (sum > threshold) {
return sum - offset;
} else {
return sum + offset;
}
}
console.log(f(threshold, offset));
با این تغییرات، اکنون درک این که این کد چه کار می کند بسیار آسان تر است. متغیرها آستانه و انحراف بر اساس نقشهای خاص و تابع نامگذاری میشوند f تغییر نام یافته است محاسبهSumWithThreshold برای انتقال بهتر هدفش علاوه بر این، متغیر ج تغییر نام یافته است مجموع، که به وضوح ارزش آن را نشان می دهد.
استفاده از نام های توصیفی و معنی دار برای متغیرها و توابع به بهبود وضوح و قابلیت نگهداری کد کمک می کند. حتی در یک مثال پیچیدهتر، استفاده از قراردادهای نامگذاری خوب میتواند تفاوت بزرگی در نحوه درک و نگهداری کد ایجاد کند.
از تورفتگی و قالب بندی مناسب استفاده کنید
تورفتگی و قالب بندی ثابت نقش مهمی در خوانایی کد ایفا می کند. کدهای قالب بندی شده به درستی درک را افزایش می دهند و پیروی از ساختار منطقی پایگاه کد را آسان تر می کنند. همچنین یکپارچگی را در سراسر پروژه ارتقا می دهد، به خصوص زمانی که چندین توسعه دهنده روی یک کد کار می کنند.
کد زیر را بدون تورفتگی مناسب در نظر بگیرید:
function calculateAverage(numbers){
let sum = 0;
for(let i=0;i<numbers.length;i++){
sum += numbers[i];
}
let average = sum/numbers.length;
return average;
}
بدون تورفتگی، شناسایی بصری ساختار کد و تودرتو چالش برانگیز می شود. این می تواند منجر به سردرگمی و ایجاد خطا در هنگام درک یا اصلاح کد شود.
با اعمال تورفتگی ثابت، کد بسیار خواناتر و ساختارمندتر می شود:
function calculateAverage(numbers) {
let sum = 0;
for (let i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
let average = sum / numbers.length;
return average;
}
در کد قالب بندی شده، هر سطح از تورفتگی نشان دهنده سطح بالاتری از تودرتو یا محدوده است. این رابطه بین بلوک های مختلف کد، مانند حلقه ها و دستورات شرطی را روشن می کند. اکنون اسکن و درک کد در یک نگاه آسان تر است.
علاوه بر تورفتگی، شیوههای قالببندی ثابت باید اعمال شود، مانند فاصلهگذاری مناسب در اطراف عملگرها، قرار دادن ثابت مهاربندها، و تراز کردن عناصر کد مرتبط. پیروی از یک راهنمای سبک یا استفاده از ابزار قالبدهنده کد مانند Prettier میتواند به حفظ قالببندی ثابت در سراسر پایگاه کد کمک کند.
توابع، متدها و کلاس ها را کوتاه نگه دارید
“هنگام انتخاب نام برای چیزی، از رایج ترین نام کوتاه استفاده کنید”. این اصل فراتر از نام دامنه گسترش می یابد و برای عناصر مختلف در توسعه نرم افزار اعمال می شود. این شامل متغیرها، توابع، کلاس ها و موارد دیگر است. با انتخاب نامهای کوتاهتر و متداولتر، خوانایی و درک کد میتواند به میزان قابل توجهی بهبود یابد.
به عنوان مثال، فرض کنید یک تابع به نام دارید رها کردن چیزی. در آن صورت، انتخاب یک جایگزین کوتاهتر و پرکاربردتر ممکن است مفید باشد. شما می توانید نام تابع را به رها کردن چیزی، مثلا. کلمه “رهایی” کوتاهتر و آشناتر از “رها کردن” است. از Google یا ChatGPT برای جستجوی مترادفهای کلمه استفاده کنید، بهعنوان مثال، «رها کردن مترادفها»، برای یافتن کوتاهترین و رایجترین عبارت مشابه.
نظر و سند
اظهار نظر و مستندسازی کد شما برای اطمینان از وضوح، قابلیت نگهداری و قابل فهم بودن آن مهم است. نظرات و مستندات مناسب، بینش ارزشمندی را در مورد هدف، رفتار و هرگونه ملاحظات یا محدودیتهای کد ارائه میکنند. آنها به عنوان یک ابزار ارتباطی برای توسعه دهندگان، از جمله خود و اعضای تیم آینده شما، به آنها کمک می کنند تا به طور مؤثرتر با کد حرکت کنند و کار کنند.
در گذشته اشتباه کردم که از اظهار نظر و مستندسازی درست غافل شدم. من قبلاً معتقد بودم که کد من هرگز توسط شخص دیگری خوانده نمی شود و سرمایه گذاری در زمان برای اظهار نظر اتلاف است. با این حال، به زودی متوجه شدم که این رویکرد ناقص است.
کد به ندرت به صورت مجزا توسعه داده می شود. پروژه ها شامل همکاری، نگهداری و اغلب، انتقال کد از یک توسعه دهنده به توسعه دهنده دیگر است. حتی اگر شما تنها توسعهدهنده باشید، ممکن است ماهها یا سالها بعد دوباره کد خود را مرور کنید و بدون مستندات مناسب، درک کد خود به یک کار دلهرهآور تبدیل میشود.
در اینجا برخی از بهترین روش ها برای اظهار نظر و مستندسازی کد شما وجود دارد:
- از نظرات درون خطی استفاده کنید: برای توضیح بخش های پیچیده یا غیر واضح، نظراتی را در کد خود وارد کنید. نظرات درون خطی باید زمینه و توضیح بیشتری را بدون بیان موارد واضح ارائه دهند.
// Calculate the sum of the array
let sum = 0;
for (let i = 0; i < array.length; i++) {
sum += array[i];
}
- هدرهای تابع و روش توصیفی را بنویسید: هر تابع یا روش را با یک نظر توصیفی شروع کنید که هدف، پارامترهای ورودی، مقادیر بازگشتی و هر گونه عوارض جانبی را خلاصه می کند. این به خوانندگان کمک می کند تا به سرعت رفتار تابع را بدون فرو رفتن در جزئیات پیاده سازی درک کنند.
/**
* Calculate the average of an array of numbers.
* @param {number[]} numbers - The input array of numbers.
* @returns {number} The average of the numbers.
*/
function calculateAverage(numbers) {
// Implementation
}
-
APIهای خارجی را مستند کنید: هنگام کار با API یا کتابخانه های خارجی، نحوه استفاده موثر از آنها را مستند کنید. مثال هایی ارائه دهید، پارامترهای ورودی و مقادیر مورد انتظار آنها را توضیح دهید و ساختار پاسخ یا خروجی مورد انتظار را به تفصیل شرح دهید.
-
نظرات را به طور منظم به روز کنید: نظرات خود را با تغییرات کد به روز نگه دارید. نظرات منسوخ یا گمراهکننده میتوانند بدتر از نداشتن نظر باشند، زیرا میتوانند توسعهدهندگان را گمراه کنند و سردرگمی ایجاد کنند.
-
فایل های README را بنویسید: یک فایل README را در فهرست اصلی پروژه خود قرار دهید تا یک نمای کلی از پروژه، دستورالعملهای نصب، مثالهای استفاده و هر گونه اطلاعات مرتبط برای مشارکتکنندگان یا کاربران ارائه شود.
اجتناب از تکرار کد (اصل DRY)
تکرار کد که به عنوان اصل “تکرار نکنید” (DRY) نیز شناخته می شود، به تمرین داشتن کد اضافی یا تکراری در پایگاه کد شما اشاره دارد. کدهای تکراری می تواند منجر به مشکلات متعددی شود، از جمله افزایش سربار تعمیر و نگهداری، کاهش خوانایی و خطر ایجاد باگ.
با در نظر گرفتن تکنیک های زیر می توانید از تکرار کد جلوگیری کنید و به اصل DRY پایبند باشید:
-
استخراج کد قابل استفاده مجدد: قابلیت های مشترک را شناسایی کنید و توابع، متدها یا کلاس های جداگانه ایجاد کنید
-
از وراثت و ترکیب استفاده کنید: از وراثت و ترکیب در برنامه نویسی شی گرا برای استفاده مجدد از کد استفاده کنید
-
از کتابخانه ها و چارچوب ها استفاده کنید: از ابزارهای موجود به جای اختراع مجدد قابلیت ها برای کاهش تکرار استفاده کنید.
-
کد تکراری Refactor: به طور منظم کد را مرور کنید و منطق رایج را در اجزای قابل استفاده مجدد استخراج کنید.
از اعداد و رشته های جادویی خودداری کنید
اعداد و رشته های جادویی مقادیر سخت کدگذاری شده ای هستند که در سرتاسر پایگاه کد شما استفاده می شوند، اغلب بدون هیچ توضیح یا مستندسازی واضحی. درک و نگهداری این مقادیر ممکن است دشوار باشد و منجر به اشکالات و خطاها شود. همیشه برای هر عدد یا رشته ای جادویی ثابت ها را اعلام کنید و از آنها در کل پایگاه کد خود استفاده کنید. این تغییر این مقادیر را در آینده آسان تر می کند و زمینه استفاده از آنها را فراهم می کند.
از لانه سازی عمیق خودداری کنید
Deep Nesting به سطوح بیش از حد تورفتگی و تودرتو در کد شما اشاره دارد. زمانی اتفاق میافتد که چندین سطح از دستورات شرطی، حلقهها یا توابع تودرتو در یکدیگر وجود داشته باشد. در حالی که تودرتو گاهی اوقات ضروری است، سطوح بیش از حد تودرتو میتواند خواندن، درک و نگهداری کد شما را سختتر کند. همچنین شانس معرفی باگ ها را افزایش می دهد و عملکرد کد را کاهش می دهد.
با پیروی از این نکات می توانید از تودرتو عمیق در کد خود جلوگیری کنید. ابتدا، منطق خود را با تقسیم کردن عملیات پیچیده به توابع یا روش های کوچکتر و قابل مدیریت تر، ساده کنید. این به بهبود سازماندهی و خوانایی کد کمک می کند. دوم، به طور منظم کد خود را مرور کنید و به دنبال فرصتهایی باشید که بلوکهای تودرتو را به توابع یا روشهای جداگانه تبدیل یا استخراج کنید و سطوح تودرتو را کاهش دهید. در نهایت، استفاده از بازگشتهای اولیه را برای رسیدگی به موارد استثنایی یا شرایط خروج زودهنگام در کد خود در نظر بگیرید، که میتواند به صاف کردن ساختار کد و خوانایی آن کمک کند.
بازسازی مداوم
Refactoring مداوم یکی دیگر از جنبه های مهم نوشتن کد تمیز است. این شامل ایجاد تغییرات در پایگاه کد موجود برای بهبود طراحی، ساختار و خوانایی آن بدون تغییر عملکرد آن است. این به از بین بردن بوی کد کمک می کند و بدهی فنی را کاهش می دهد.
Refactoring یک فرآیند مداوم است که باید در گردش کار توسعه شما ادغام شود. نباید بعد از نوشتن کد، کار جداگانه ای در نظر گرفته شود. برای اطمینان از اینکه کد همیشه در وضعیت خوبی قرار دارد، باید به طور منظم، در مراحل افزایشی کوچک انجام شود.
کدهای استفاده نشده را حذف کنید
چند بار فراموش کرده اید که کدهای استفاده نشده را از پروژه های خود حذف کنید؟ برای من، بیشتر از آن چیزی که بخواهم اعتراف کنم این اتفاق افتاده است. با این حال، بسیار مهم است که به طور منظم کد خود را بررسی کنید و هر گونه توابع، کلاس یا متغیرهای استفاده نشده را که دیگر به آن نیاز ندارید حذف کنید. با انجام این کار، می توانید خوانایی کد خود را تا حد زیادی افزایش دهید و پیچیدگی آن را کاهش دهید. علاوه بر این، حذف کدهای استفاده نشده با حذف پردازش های غیر ضروری، عملکرد برنامه شما را بهبود می بخشد. شناسایی و حذف کدهای استفاده نشده را از طریق بررسی دستی کد یا با کمک ابزارهایی مانند Eslint به یک عادت تبدیل کنید.
خلاصه
نوشتن کد قابل نگهداری و خوانا یک مهارت اساسی برای هر توسعه دهنده ای است. با رعایت بهترین شیوه ها و تکنیک هایی مانند پیروی از یک سبک کدنویسی ثابت، اظهار نظر مناسب روی کد خود، و اجتناب از تکرار کد، می توانید کیفیت پایگاه کد خود را تا حد زیادی بهبود بخشید.
همچنین به یاد داشته باشید که سادگی و خوانایی را بر کدهای پیچیده و پیچیده که ممکن است درک و نگهداری آن دشوار باشد، اولویت دهید. از ابزارهای خودکار برای کمک به شناسایی و حذف کدهای استفاده نشده و کاهش پیچیدگی پایگاه کد خود استفاده کنید.