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


۱۹ مهر ۱۴۰۲

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

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

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());
    }

منبع: medium.com

برچسب‌ها:

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

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

۲.۵ گیگابایت 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