+19

Nét code nết người, Những cách giúp code của bạn sạch hơn

Viết code không hề khó, nhưng viết code “Sạch” lại không hề dễ dàng.

Code “Sạch” là gì? Những lập trình viên vừa bước chân vào nghề, hay những lập trình viên “Gà” thường Code cho xong mà không cần nghĩ tới tương lai của dự án, có bao giờ bạn mở lại đống code của bạn mà bạn viết cách đây khoảng 1 năm, và bạn đọc nó và thấy mình chả viết nó là cái gì Điển hình như việc sinh viên hay code thuật toán, đặt tên biến là a,b,c… xong đọc lại chả nhớ a,b,c là cái vẹo gì. Code sạch là code mà bạn viết ra trước hết là chính bạn có thể đọc, sau đó là người khác đọc vào, biết bạn đang code cái gì. Người viết code sạch thì sẽ không lạm dụng comment, mà ngươi khác vẫn hiểu những gì bạn viết.

1. Sử dụng IDE “Ngon”

Đầu tiên hãy lựa chọn IDE phù hợp với ngôn ngữ của mình, và “ngon”. Ví dụ hồi trước mình có code java trên NetBean, Eclipse, sau khi chuyển qua Intelliji thì nó như 1 bầu trời mới vậy. Tất nhiên IDE cũng chỉ là 1 phần, đối với những lập trình viên mới thì chọn IDE tốt sẽ giúp tránh đc các lỗi vặt, đảm bảo tốt được hiệu năng

Một số IDE mình đang dùng: Visual Studio (.NET), Visual Studio Code (Front end), DbForge (Database) (bạn có thể dùng DataGrib, cũng cực ngon luôn), Visual Paradigm (Phân tích thiết kế), PostMan (Call API),…

2. Đặt tên phải có Ý nghĩa

Đặt tên biến luôn là một vấn đề khá là khó khăn, tuy nhiên hãy cố đặt nó theo cách dễ hiểu nhất

Code tồi

int a;

Code Xịn

int daysToAppocalypse;

3. Sử dụng Camel/Pascal Case

Camel Case

Về cơ bản, chữ cái đầu tiên của từ đầu sẽ viết thường, chữ cái đầu của từ tiếp theo sẽ viết hoa

Code tồi

int RandomInteger;
string FirstName;

Code Xịn

int randomInteger;
string firstName;

Pascal Case

Các chữ cái đầu của từ sẽ được viết hoa (Áp dụng cho class và function)

Code tồi

class program
{
    static void main(string[] args)
    {
        Console.WriteLine("Hello World!");
    }
}

Code Xịn

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
    }
}

4. Chú ý định dạng code

Code tồi

class Program
{static void Main(string[] args)
    {Console.WriteLine("Hello World!");
    }
}

Lựa chọn IDE ngon sẽ giúp bạn format code tự động, như này chẳng hạn

5. Thêm Comment vào những chỗ Cần Thiết

Hãy sử dụng comment vào những chỗ “Cần thiết”, đừng lạm dụng quá. Ông nào code thì cũng lười comment cả thôi, nhưng cố mà thêm vào để sau đọc lại còn hiểu

Như mình dùng VS, sau khi comment, lúc gọi tới hàm, chỉ vào là thấy hàm này làm gì

Hãy thêm comment khi code của bạn muốn giải thích chuyên sâu, rõ ràng, không nên lạm dụng comment

6. Code phải được Tái sử dụng

Viết code có thể được sử dụng lại là điều khá quan trọng. Nó có thể làm giảm các dòng code tổng thể trong dự án của bạn và làm cho nó có hiệu quả cao. Bạn không muốn sao chép-dán một hàm qua nhiều file/class. Thay vào đó, tạo một function chung, sau đó gọi tới ở những nơi cần. Và, nếu có bất kỳ sửa đổi nào cần thiết, bạn sẽ chỉ phải thay đổi code trong hàm đó, không phải ở mọi nơi.

Xịn hơn, bạn có thể dùng Generic và Dynamic

7. Đừng để 1 Class/ Function quá Phình To

Theo SOLID Principles, trong 1 class / function không code quá nhiều dòng, mỗi class nên là 1 chức năng nào đó nhất định, nếu dài quá, hãy tách ra 1 class / function khác

8. Sử dụng Design pattern

Lựa chọn Design Pattern tốt sẽ giúp code của bạn quản lý tốt hơn

9. Sắp xếp các thư mục / Project tốt

Việc phân chia bố cục của project, gồm những Folder nào thực hiện chức năng nào sẽ giúp bạn quản lý tốt hơn

Tất nhiên là vẫn có thể ném hết tất cả code vào 1 file hoặc tất cả file vào 1 folder, nhưng đến lúc nó phình to thì việc mở rộng là cực kỳ khó, mất thời gian và người khác đọc thì chắc chắn rồi, k hiểu gì cả

10. Tránh việc sử dụng chuỗi / số fix cứng

Code tồi

if(userRole == "Admin")
{
    //logic here
}

Code xịn

const string ADMIN_ROLE = "Admin"
if(userRole == ADMIN_ROLE )
{
//logic here
}

Ngoài ra, bạn cũng có thể tạo 1 Enum để lưu các giá trị đc hard code

11, Xoá những đoạn Code thừa

Bạn cần xoá những dòng code thừa trong quá trình code, những người viết javascript thường hay Console.log để xem kết quả, đôi khi họ cứ để đấy mãi

12. Sử dụng Async/Await

Lập trình bất đồng bộ sẽ giúp code của bạn chạy nhanh hơn, tuy nhiên vấn đề quản lý task chưa bao giờ là dễ dàng

13. Không sử dụng ‘throw ex’

Code tồi

try
{
    // Do something..
}
catch (Exception ex)
{
    throw ex;
}

Code xịn

try
{
    // Do something..
}
catch (Exception ex)
{
    throw;
}

14. Sử dụng toán tử 3 ngôi

Code tồi

public string SomeMethod(int value)
{
    if(value == 10)
    {
        return "Value is 10";
    }
    else
    {
        return "Value is not 10";
    }
}

Code xịn

public string SomeMethod(int value)
{
    return value == 10 ? "Value is 10" : "Value is not 10";
}

15. Đừng cộng chuỗi

Cộng chuỗi cũng oke đấy, nhưng nhìn sẽ rất rối

Code tồi

public string SomeMethod(Student student)
{
    return "Student Name is " + student.Name + ". Age is " + student.Age;
}

Code xịn

public string SomeMethod(Student student)
{
    return $"Student Name is {student.Name}. Age is {student.Age}";
}

16. Sử dụng quá nhiều Parameter trong hàm

Thay vào đó hãy nhóm chúng thành 1 class cho gọn

Code tồi

public Student SomeMethod(string name, string city, int age, string section, DateTime dateOfBirth)
{
    return new Student()
    {
        Age = age,
        Name = name,
        //Other parameters too
    };
}

Code xịn

public Student SomeMethod(Student student)
{
    return student;
}

17. Đừng bỏ trống catch

Code tồi

public void SomeMethod()
{
    try
    {
        DoSomething();
    }
    catch
    {
    }
}

Code xịn

public void SomeMethod()
{
    try
    {
        DoSomething();
    }
    catch (Exception ex)
    {
        LogItSomewhere(ex);
    }
}

18. Sử dụng Multiple catch

Code tồi

try
{
    // Do something..
}
catch (Exception ex)
{

    if (ex is TaskCanceledException)
    {
        // Take action for TaskCanceledException
    }
    else if (ex is TaskSchedulerException)
    {
        // Take action for TaskSchedulerException
    }
}

Code xịn

try
{
    // Do something..
}
catch (TaskCanceledException ex)
{
    // Take action for TaskCanceledException
}
catch (TaskSchedulerException ex)
{
    // Take action for TaskSchedulerException
}

19. Don't Repeat Yourself (DRY)

Code tồi

public List ShowDeveloperList(Developers developers)
{
    foreach (var developers in developer)
    {
        var expectedSalary = developer.CalculateExpectedSalary();
        var experience = developer.GetExperience();
        var githubLink = developer.GetGithubLink();
        var data = new[] {
            expectedSalary,
            experience,
            githubLink
        };

        Render(data);
    }
}

public List ShowManagerList(Manager managers)
{
    foreach (var manager in managers)
    {
        var expectedSalary = manager.CalculateExpectedSalary();
        var experience = manager.GetExperience();
        var githubLink = manager.GetGithubLink();
        var data =
        new[] {
            expectedSalary,
            experience,
            githubLink
        };

        render(data);
    }
}

Code xịn

public List ShowList(Employee employees)
{
    foreach (var employee in employees)
    {
        var expectedSalary = employees.CalculateExpectedSalary();
        var experience = employees.GetExperience();
        var githubLink = employees.GetGithubLink();
        var data =
        new[] {
            expectedSalary,
            experience,
            githubLink
        };

        render(data);
    }
}

Code cực xịn

public List ShowList(Employee employees)
{
    foreach (var employee in employees)
    {
        render(new[] {
            employee.CalculateExpectedSalary(),
            employee.GetExperience(),
            employee.GetGithubLink()
        });
    }
}

20. SOLID

Bạn hãy tìm hiểu về các quy tắc này, nó sẽ giúp íchh cho bạn rất nhiều

Tài liệu tham khảo: Clean Code concepts and tools adapted for .NET (github.com)

20 Important Tips To Write Clean C# Code - MUST SHARE


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.