تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

بهترین نکات مربوط به کدنویسی تمیز (clean code)

clean code یا کدنویسی تمیز به مجموعه‌ای از شیوه‌های برنامه‌نویسی گفته می‌شود که رعایت آن‌ها باعث افزایش خوانایی، پایداری و سادگی کد می‌شود.

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

آنچه در ادامه می‌خوانید:

  • کدنویسی تمیز (clean code) چیست؟
  • اصول و نکات کدنویسی تمیز چیست؟
  • جمع‌بندی
  • سوالات متداول
بهترین نکات مربوط به کدنویسی تمیز (clean code)

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

کدنویسی تمیز (Clean Code) به روشی از توسعه نرم‌افزار گفته می‌شود که در آن کدها به‌گونه‌ای نوشته می‌شوند که خوانا، قابل فهم، قابل نگهداری و توسعه‌پذیر باشند. این رویکرد مبتنی بر اصولی مانند نام‌گذاری دقیق، توابع کوچک و تک‌مسئولیتی، حذف تکرار (DRY)، ساده‌سازی منطق، و پایبندی به اصول طراحی شی‌گرا مانند SOLID است. هدف از کدنویسی تمیز، تولید کدی است که نه‌تنها برای ماشین قابل اجرا باشد، بلکه برای انسان نیز به‌راحتی قابل درک باشد؛ این مسئله در پروژه‌های مقیاس‌پذیر و تیمی اهمیت زیادی دارد.

ترفندهای کامل و جامع برای استفاده از Jupyter Notebook را مقاله زیر بخوانید.
ترفندهای استفاده از Jupyter Notebook

اصول و نکات کدنویسی تمیز چیست؟

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

1) برای متغیرهای خود، نام‌های با مسما به کار ببرید.

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

// Bad Example
int x = 5;

// Good Example
int numberOfStudents = 5;

2) کامنت‌های کمتری را به کار ببرید.

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

// Bad Example
// This function adds two numbers together and returns the result
public int add(int num1, int num2)
{
    // add the numbers together
    int result = num1 + num2;
    // return the result
    return result;
}

// Good Example
public int Add(int firstNumber, int secondNumber)
{
    int result = firstNumber + secondNumber;
    return result;
}

3) از قالب‌بندی ثابت استفاده کنید.

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

// Bad Example
public void PrintName(string name)
{
Console.WriteLine("Name: " + name);
}

// Good Example
public void PrintName(string name)
{
    Console.WriteLine($"Name: {name}");
}

4) توابع و متدهای خود را کوچک و متمرکز بنویسید.

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

// Bad Example
public void DoEverything(int x, int y, int z)
{
    // do something
    // do something else
    // and more
}

// Good Example
public int Add(int firstNumber, int secondNumber)
{
    return firstNumber + secondNumber;
}

public int Multiply(int firstNumber, int secondNumber)
{
    return firstNumber * secondNumber;
}

5) برای توابع و کلاس‌های خود، نام‌های بامعنی پیدا کنید.

همانطور که نام‌گذاری متغیرها در خوانایی کد بسیار مهم است، نام‌گذاری توابع، متدها و کلاس‌ها بر اساس نحوه کارایی آن‌ها نیز بسیار مهم است:

// Bad Example
public void DoSomething(int x, int y, int z)
{
    // do something
}

// Good Example
public void CalculateTotalCost(decimal price, int quantity)
{
    // calculate total cost
}

6) از ارث‌بری و پلی‎مورفیسم استفاده کنید.

دو اصل ارث‌بری (Inheritance) و چندریختی (Polymorphism) در شی‌گرایی باعث می‌شوند تا کد خیلی منعطف‌تر شود و تغییر آن آسان‌تر باشد:

// Bad Example
public class Animal
{
    public void Walk()
    {
        // walk
    }
}

public class Dog
{
    public void Walk()
    {
        // walk
    }

    public void Bark()
    {
        // bark
    }
}

// Good Example
public abstract class Animal
{
    public abstract void Walk();
}

public class Dog : Animal
{
    public override void Walk()
    {
        // walk
    }

    public void Bark()
    {
        // bark
    }
}

7) استثناء‌ها و خطاها را مدیریت کنید.

مدیریت استثناء‌ها (exception handling) باعث می‌شود خطاهایی که کاربران برنامه ممکن است با آن مواجه شوند، به صورت قابل توجهی مدیریت شود. این کار از رفتار غیرمنتظره کد جلوگیری می‌کند:

// Bad Example
public void Divide(int num1, int num2)
{
    int result = num1 / num2;
}

// Good Example
public void Divide(int num1, int num2)
{
    try
    {
        int result = num1 / num2;
    }
    catch (DivideByZeroException ex)
    {
        Console.WriteLine("Cannot divide by zero");
        // log the error
    }
}

8) از دوباره‌نویسی پرهیز کنید.

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

// Bad Example
public void GenerateInvoice(string customerName, List<Product> products)
{
    Console.WriteLine("Invoice for " + customerName);
    Console.WriteLine("Product\t\tPrice");
    decimal total = 0;
    foreach (Product product in products)
    {
        Console.WriteLine(product.Name + "\t\t" + product.Price);
        total += product.Price;
    }
    Console.WriteLine("Total\t\t" + total);
}

// Good Example
public class Invoice
{
    public string CustomerName { get; set; }
    public List<Product> Products { get; set; }

    public decimal GetTotal()
    {
        decimal total = 0;
        foreach (Product product in Products)
        {
            total += product.Price;
        }
        return total;
    }
}

public class InvoiceGenerator
{
    public void GenerateInvoice(Invoice invoice)
    {
        Console.WriteLine("Invoice for " + invoice.CustomerName);
        Console.WriteLine("Product\t\tPrice");
        foreach (Product product in invoice.Products)
        {
            Console.WriteLine(product.Name + "\t\t" + product.Price);
        }
        Console.WriteLine("Total\t\t" + invoice.GetTotal());
    }

جمع‌بندی

یکی از نکات کلیدی در فرآیند کدنویسی تمیز، طراحی دقیق مسیر و داشتن نقشه ذهنی مشخص پیش از آغاز برنامه‌نویسی است. پیش از آن‌که به سراغ پیاده‌سازی الگوریتم‌های اصلی بروید، بهتر است ابتدا بررسی کنید که کدام مسیر، ساده‌ترین و مؤثرترین راه‌حل برای مسئله‌ی مورد نظر است. پس از آن، با بهره‌گیری از اصول کدنویسی تمیز (Clean Code)، کدهایی واضح، قابل فهم و ساختاریافته بنویسید و آن‌ها را در اختیار مدیر پروژه قرار دهید.

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

سوالات متداول

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

clean code باعث می‌شود تیم‌های توسعه سریع‌تر کد را درک کنند، باگ‌ها را راحت‌تر شناسایی شوند و نگهداری و توسعه نرم‌افزار در آینده ساده‌تر باشد.

کدنویسی تمیز چیست؟

کدنویسی تمیز (Clean Code) به شیوه‌ای از برنامه‌نویسی گفته می‌شود که در آن کدها خوانا، قابل فهم، قابل نگهداری و توسعه‌پذیر هستند.

آیا رعایت اصول Clean Code در پروژه‌های کوچک هم ضروری است؟

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

قبل از نوشتن کد چه مراحلی باید طی شود؟

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

تفاوت بین Clean Code و Dirty Code چیست؟

Clean Code ساختار یافته، قابل خواندن و منظم است، در حالی که Dirty Code معمولاً نامنظم، پیچیده، سخت‌فهم و مستعد خطا است.

منبع: medium.com

به اشتراک بگذارید

برچسب‌ها: