Anophel-آنوفل کد نویسی تمیز : بهترین روش ها و اصول ها

کد نویسی تمیز : بهترین روش ها و اصول ها

انتشار:
1
0

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

Clean Code چیست؟

"Clean Code" یک مفهوم در توسعه نرم‌افزار است که به نوعی کد نویسی مرتب و قابل خواندن و تفهیم توسط انسان‌ها اشاره دارد. Clean Code به عنوان یک اصل مهم در توسعه نرم‌افزار به منظور ایجاد کدهای بهتر و قابل نگهداری تر تاکید دارد. اصول Clean Code توسط رابرت سی. مارتین (Robert C. Martin) در کتابی با عنوان "Clean Code: A Handbook of Agile Software Craftsmanship" مطرح شده‌اند.

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

چرا Clean Code مهم است؟

خوانایی: خواندن کد تمیز آسان است، به این معنی که هر کسی - از جمله خود آینده شما - می تواند آن را به سرعت درک کند. این امر زمان لازم برای درک عملکرد کد را کاهش می دهد و منجر به توسعه سریعتر و اشکال زدایی می شود.

 

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

 

همکاری: کد تمیز همکاری را تشویق می کند. وقتی کد شما تمیز و منظم باشد، سایر اعضای تیم می توانند به طور موثر روی آن کار کنند. این کار تقسیم وظایف و کار بر روی بخش های مختلف پایگاه کد را به طور همزمان آسان تر می کند.

 

کاهش باگ: کد تمیز احتمال معرفی باگ ها را کاهش می دهد. کدهایی که درک آن دشوار است، بیشتر در معرض خطا در هنگام اصلاحات یا بهبود هستند.

 

کارایی: کد تمیز کد کارآمد است. معمولاً سریعتر اجرا می شود و از منابع کمتری استفاده می کند زیرا از عملیات غیر ضروری و پیچیدگی جلوگیری می کند.

اکنون که متوجه شدیم چرا کد تمیز مهم است، اجازه دهید برخی از بهترین شیوه ها و اصول را بررسی کنیم تا به شما در نوشتن کد تمیز کمک کنند.

بهترین روش ها و اصول برای نوشتن کد پاک

1 . نام های معنی دار متغیرها و توابع

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

# Bad variable name
x = 5

# Good variable name
total_score = 5

2 . توابع و متد ها را کوتاه نگه دارید

توابع و متد ها باید مختصر و متمرکز بر یک کار واحد باشند. اصل تک مسئولیتی (SRP) بیان می کند که یک تابع باید یک کار را انجام دهد و آن را به خوبی انجام دهد. درک، آزمایش و نگهداری توابع کوتاه‌تر آسان‌تر است. اگر یک تابع خیلی طولانی یا پیچیده شد، آن را به توابع کوچکتر و قابل مدیریت تقسیم کنید.

اصل تک مسئولیتی یکی از اصول SOLID می باشد.

// Long and complex function
function processUserData(user) {
    // Many lines of code...
}

// Refactored into smaller functions
function validateUserInput(userInput) {
    // Validation logic...
}

function saveUserToDatabase(user) {
    // Database operation...
}

3 . کامنت نویسی و مستندات

از کامنت به اندازه کافی استفاده کنید و زمانی که این کار را کردید، آنها را معنادار کنید. کد باید تا حد امکان خود توضیحی باشد. اسناد، مانند کامنت درون خطی و فایل‌های README، به توسعه‌دهندگان دیگر کمک می‌کنند تا هدف و کاربرد کد شما را درک کنند. الگوریتم های پیچیده، تصمیمات غیر پیش پا افتاده و API های عمومی را مستند کنید.

# Bad comment
x = x + 1  # Increment x

# Good comment
# Calculate the total score by incrementing x
total_score = x + 1

4 . فرمت بندی و تورفتگی سازگار

به یک سبک کدنویسی و تورفتگی ثابت پایبند باشید. این باعث می شود که پایگاه کد تمیز و منظم به نظر برسد. اکثر زبان های برنامه نویسی دارای استانداردهای کدنویسی پذیرفته شده توسط جامعه هستند (به عنوان مثال، PEP 8 برای پایتون، eslint برای جاوا اسکریپت) که باید از آنها پیروی کنید. سازگاری همچنین در مورد قراردادهای نامگذاری، فاصله گذاری و ساختار کد اعمال می شود.

// Inconsistent formatting
if(condition){
    doSomething();
  } else {
      doSomethingElse();
}

// Consistent formatting
if (condition) {
    doSomething();
} else {
    doSomethingElse();
}

5 . اصل DRY (خودت را تکرار نکن).

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

فرض کنید روی یک برنامه جاوا اسکریپت کار می کنید که قیمت کل اقلام در سبد خرید را محاسبه می کند. در ابتدا، شما دو عملکرد جداگانه برای محاسبه قیمت هر نوع کالا دارید: یکی برای محاسبه قیمت یک کتاب و دیگری برای محاسبه قیمت یک لپ تاپ. این کد اولیه است:

function calculateBookPrice(quantity, price) {
    return quantity * price;
}

function calculateLaptopPrice(quantity, price) {
    return quantity * price;
}

در حالی که این توابع کار می کنند، اما اصل DRY را نقض می کنند زیرا منطق محاسبه قیمت کل برای انواع مختلف اقلام تکرار می شود. اگر انواع آیتم های بیشتری برای محاسبه دارید، در نهایت این منطق را تکرار خواهید کرد. برای پیروی از اصل DRY و بهبود قابلیت نگهداری کد، می توانید کد را به صورت زیر تغییر دهید:

function calculateItemPrice(quantity, price) {
    return quantity * price;
}

const bookQuantity = 3;
const bookPrice = 25;

const laptopQuantity = 2;
const laptopPrice = 800;

const bookTotalPrice = calculateItemPrice(bookQuantity, bookPrice);
const laptopTotalPrice = calculateItemPrice(laptopQuantity, laptopPrice);

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

اکنون می توانید به راحتی با فراخوانی CalculItemPrice با مقدار و مقادیر مناسب قیمت کل کتاب، لپ تاپ یا هر نوع کالای دیگری را محاسبه کنید. این رویکرد قابلیت استفاده مجدد، خوانایی و نگهداری کد را ارتقا می دهد و در عین حال خطر خطاهای ناشی از کدهای تکراری را کاهش می دهد.

6 . از فضای خالی معنی دار استفاده کنید

کد خود را به درستی با فاصله و خطوط شکسته فرمت کنید. این خوانایی را افزایش می دهد. از فضای خالی برای جداسازی بخش های منطقی کد خود استفاده کنید. کدهای با فرمت مناسب اسکن آسان تر است و بار شناختی خوانندگان را کاهش می دهد.

// Poor use of whitespace
const sum=function(a,b){return a+b;}

// Improved use of whitespace
const sum = function (a, b) {
    return a + b;
}

7 . رسیدگی به خطا

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

// Inadequate error handling
try {
    result = divide(x, y);
} catch (error) {
    console.error("An error occurred");
}

// Proper error handling
try {
    result = divide(x, y);
} catch (error) {
    if (error instanceof ZeroDivisionError) {
        console.error("Division by zero error:", error.message);
    } else if (error instanceof ValueError) {
        console.error("Invalid input:", error.message);
    } else {
        console.error("An unexpected error occurred:", error.message);
    }
}

8 . تست کردن

تست های واحد را بنویسید تا صحت کد خود را تأیید کنید. توسعه تست محور (TDD) می تواند با وادار کردن شما به در نظر گرفتن موارد لبه و رفتار مورد انتظار از قبل، به شما کمک کند تا کد پاک تری بنویسید. کدهایی که به خوبی آزمایش شده اند قابل اعتمادتر هستند و بازنویسی آن آسان تر است. می توانید در مقاله 5 اصل از بهترین روش برای تست نویسی ، بهترین تست ها را بنویسید.

// Example using JavaScript and the Jest testing framework
test('addition works correctly', () => {
    expect(add(2, 3)).toBe(5);
    expect(add(-1, 1)).toBe(0);
    expect(add(0, 0)).toBe(0);
});

9 . Refactoring

کد خود را به طور مرتب اصلاح کنید. همانطور که الزامات تغییر می کند و درک شما از دامنه مشکل عمیق تر می شود، کد خود را مطابق با آن تنظیم کنید. Refactoring به حفظ کد تمیز در حین تکامل پروژه کمک می کند. از بازدید مجدد و بهبود کد موجود در صورت لزوم نترسید.

فرض کنید تابعی دارید که قیمت کل اقلام در سبد خرید را با درصد تخفیف ثابت محاسبه می کند:

function calculateTotalPrice(cartItems) {
    let totalPrice = 0;
    for (const item of cartItems) {
        totalPrice += item.price;
    }
    return totalPrice - (totalPrice * 0.1); // Apply a 10% discount
}

در ابتدا، این تابع قیمت کل را محاسبه می کند و یک تخفیف ثابت 10٪ اعمال می کند. با این حال، با پیشرفت پروژه، متوجه می شوید که باید از تخفیف های متغیر پشتیبانی کنید.

برای اصلاح کد به منظور انعطاف پذیری بیشتر، می توانید یک پارامتر تخفیف را معرفی کنید:

function calculateTotalPrice(cartItems, discountPercentage) {
    if (discountPercentage < 0 || discountPercentage > 100) {
        throw new Error("Discount percentage must be between 0 and 100.");
    }

    let totalPrice = 0;
    for (const item of cartItems) {
        totalPrice += item.price;
    }

    const discountAmount = (totalPrice * discountPercentage) / 100;
    return totalPrice - discountAmount;
}

در این کد بازسازی شده:

ما یک پارامتر discountPercentage به تابع accountTotalPrice اضافه کرده ایم که به شما امکان می دهد درصد تخفیف را هنگام فراخوانی تابع مشخص کنید.

ما اعتبارسنجی را روی پارامتر discountPercentage انجام می‌دهیم تا مطمئن شویم که در محدوده معتبر (0 تا 100%) قرار می‌گیرد. اگر در محدوده نباشد، خطا می دهیم.

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

با بازسازی کد به این روش، انعطاف پذیری و قابلیت نگهداری آن را بهبود بخشیده اید. شما به راحتی می توانید عملکرد را برای رسیدگی به سناریوهای تخفیف مختلف بدون نیاز به بازنویسی کل منطق تطبیق دهید. این نشان می‌دهد که با تکامل پروژه شما و تغییر نیازمندی‌ها، بازسازی کد منظم.

10 . کنترل نسخه

از سیستم های کنترل نسخه مانند Git برای ردیابی تغییرات کد خود استفاده کنید. این به شما این امکان را می دهد که به طور موثر با اعضای تیم همکاری کنید، در صورت لزوم به نسخه های قبلی برگردید و تاریخچه ای تمیز از توسعه پروژه خود را حفظ کنید. Git ابزارهایی را برای بررسی کد، انشعاب و ادغام، تسهیل همکاری و پاکی کد ارائه می دهد.

نتیجه

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

#کد_نویسی#کد_تمیز#کد_پاک#اصول_کد_نویسی#clean_code#codeing
نظرات ارزشمند شما :
Loading...