Chuyển đến nội dung chính

Pascal Case, Camel Case và Kebab Case

Mình đã bối rối khi đặt tên cho blob file mà không biết nên đặt theo kiểu nào. Sau khi tìm hiểu, mình mới biết cách mình đang cần là Kebab Case. Chắc hẳn bạn đã nghe qua các cách đặt tên như Pascal Case hay Camel Case, nhưng Kebab Case thì có vẻ ít người quen thuộc hơn. Trong bài viết này, mình sẽ giới thiệu ba kiểu đặt tên này và cách áp dụng chúng. Ngoài ra chúng ta sẽ xem thêm về Proper Case.

Pascal Case

Pascal Case là cách đặt tên mà mỗi từ đều viết hoa chữ cái đầu tiên. Đối với chúng ta, các hàm trong C# thường được viết theo Pascal Case như một tiêu chuẩn chung. 

Ví dụ, nếu bạn có một hàm tên là CalculateSum, UploadBlob, hoặc GenerateReport, chúng đều được viết theo Pascal Case. Việc đặt tên như vậy giúp code của chúng ta rõ ràng hơn và dễ nhận diện chức năng của từng hàm.

Dưới đây là hàm chuyển 1 string bất kỳ thành string kiểu Pascal Case

// Convert the string to Pascal case.
public static string ToPascalCase(this string the_string)
{
    // If there are 0 or 1 characters, just return the string.
    if (the_string == null) return the_string;
    if (the_string.Length < 2) return the_string.ToUpper();

    // Split the string into words.
    string[] words = the_string.Split(
        new char[] { },
        StringSplitOptions.RemoveEmptyEntries);

    // Combine the words.
    string result = "";
    foreach (string word in words)
    {
        result +=
            word.Substring(0, 1).ToUpper() +
            word.Substring(1);
    }

    return result;
}

Camel Case

Camel Case là một biến thể của Pascal Case, nhưng thay vì viết hoa chữ cái đầu tiên của từ đầu tiên, chúng ta chỉ viết hoa chữ cái đầu của các từ tiếp theo. Camel Case được sử dụng rộng rãi trong JavaScript, đặc biệt là khi đặt tên biến hoặc hàm, ví dụ như calculateSum, uploadBlob, hoặc generateReport. Bạn sẽ thấy cách đặt tên này trong các dự án liên quan đến JavaScript hay TypeScript.

// Convert the string to camel case.
public static string ToCamelCase(this string the_string)
{
    // If there are 0 or 1 characters, just return the string.
    if (the_string == null || the_string.Length < 2)
        return the_string;

    // Split the string into words.
    string[] words = the_string.Split(
        new char[] { },
        StringSplitOptions.RemoveEmptyEntries);

    // Combine the words.
    string result = words[0].ToLower();
    for (int i = 1; i < words.Length; i++)
    {
        result +=
            words[i].Substring(0, 1).ToUpper() +
            words[i].Substring(1);
    }

    return result;
}

Kebab Case

Kebab Case lại có một cách đặt tên khác biệt: mỗi từ được viết thường và phân cách bởi dấu gạch ngang (-). Chúng ta thường thấy kiểu này trong URL hoặc trong file JSON. Ví dụ, calculate-sum, upload-blob, generate-report

static string ConvertToKebabString(string input)
{
    if (string.IsNullOrEmpty(input))
    {
        return string.Empty;
    }

    StringBuilder result = new StringBuilder();
    for (int i = 0; i < input.Length; i++)
    {
        char c = input[i];
        if (char.IsUpper(c))
        {
            if (i > 0)
            {
                result.Append('-');
            }
            result.Append(char.ToLower(c));
        }
        else
        {
            result.Append(char.ToLower(c));
        }
    }

    return result.ToString();
}

Proper case

Sau khi đã biết về Kebab Case, chúng ta cùng tìm hiểu thêm về Proper Case.
Ví dụ, nếu chúng ta muốn hiển thị tên file blob một cách dễ đọc cho người dùng, Proper Case sẽ biến "upload-blob" thành "Upload Blob".

// Capitalize the first character and add a space before
// each capitalized letter (except the first character).
public static string ToProperCase(this string the_string)
{
    // If there are 0 or 1 characters, just return the string.
    if (the_string == null) return the_string;
    if (the_string.Length < 2) return the_string.ToUpper();

    // Start with the first character.
    string result = the_string.Substring(0, 1).ToUpper();

    // Add the remaining characters.
    for (int i = 1; i < the_string.Length; i++)
    {
        if (char.IsUpper(the_string[i])) result += " ";
        result += the_string[i];
    }

    return result;
}

Tham khảo

Convert between Pascal case, camel case, and proper case in C#

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.