Tin tức mới

[PHP]Quy ước đặt tên – Naming Conventions

Lại nói về các bài viết trước, khi chúng ta cùng xem xét về các cú pháp căn bản trong PHP, tôi nghĩ đến giờ phút này nếu bạn thích ngôn ngữ này chắc bạn đã tự mày mò để code những dòng code đơn giản nhất. Tuy nhiên, trước khi bạn bước sang một mức độ cao hơn trong việc code PHP bạn nên đọc kỹ bài viết này.

Trong lập trình, những ngôn ngữ mà bạn đã được học, bên cạnh các quy tắc về đặt tên (định danh) cho biến, hàm, lớp, v.v.. bạn còn phải nắm được các quy ước về việc đặt tên – Naming Conventions. Vậy PHP có quy ước định danh ra sao?

1. Tên hàm ở cấp user (user-level) nên được đặt trong macro PHP_FUNCTION(). Các tên này nên dùng chữ in thường, và sử dụng dấu gạch dưới (_) để phân cách nếu tên gồm nhiều từ, và cũng nên xem xét để tên có độ dài vừa phải. Các tên viết tắt nên tránh dùng vì chúng làm giảm khả năng nắm được mục đích của hàm.

  • Tên chuẩn:
    ‘encrypt_self_test’
    ‘mysql_list_fields’
  • Tên chấp nhận được:
    ‘get_html_translation_table’
    ‘encrypt_mod_get_algo_sup_key_sizes’
  • Tên tồi:
    ‘hw_GetObjectByQueryCollObj’
    ‘pg_setclientencoding’
    ‘jf_n_s_i’

2. Nếu chúng là một trong số  các hàm có cùng nguồn gốc (parent), tên của nguồn gốc nên có trong tên hàm và cần làm rõ mối quan hệ đó. Nên đặt tên với định dạng ‘nguồn_gốc_*‘, định danh chỉ họ các hàm đặt phía trước.

Hay xem một họ các hàm ‘foo’ dưới đây:

  • Tên chuẩn:
    ‘foo_select_bar’
    ‘foo_insert_baz’
    ‘foo_delete_baz’
  • Tên tồi:
    ‘fooselect_bar’
    ‘fooinsertbaz’
    ‘delete_foo_baz’

3. Các hàm được sử dụng bởi những hàm user nên bắt đầu với ‘_php_’, và tiếp theo là những từ khác được phân cách bởi dấu gạch dưới (_) viết bằng chữ in thường và mô tả được chức năng của hàm. Nếu có thể ứng dụng, chúng nên được mô tả với ‘static’.

4. Tên biến phải mang ý nghĩa. Nên tránh các biến sử dụng một ký tự, trừ chúng là những biến thực sự không có ý nghĩa hoặc biến dùng tạm (ví dụ: for ($i=0; $i<100;$ i++) v.v.)

5. Tên biến nên viết bằng chữ in thường. Sử dụng dấu gạch dưới để phân tách các từ nếu tên gồm nhiều từ ghép lại.

6. Tên phương thức tuân theo quy ước đặt tên ‘studlyCaps‘ (còn được biết đến với tên gọi là ‘bumpy case’ hoặc  ‘camel caps’), và cũng nên lưu ý cần đảm bảo độ dài hợp lý. Chữ cái bắt đầu của tên dùng chữ in thường, mỗi từ tiếp theo nếu có thì viết hoa chữ cái đầu mỗi từ đó.

  • Tên chuẩn:
    ‘connect()’
    ‘getData()’
    ‘buildSomeWidget()’
  • Tên tồi:
    ‘get_Data()’
    ‘buildsomewidget’
    ‘getI()’

7. Các lớp nên có tên chứa đựng sự mô tả về nó. Tránh dùng từ viết tắt nếu có thể. Mỗi từ trong tên lớp nên viết hoa chữ cái đầu, tránh dùng dấu gạch dưới (_). Tên các lớp để thể hiện chúng có chung nguồn gốc nên có tên của nguồn gốc, mối liên quan đặt ở đầu.

  • Tên chuẩn:
    ‘Curl’
    ‘FooBar’
  • Tên tồi:
    ‘foobar’
    ‘foo_bar’

Nếu bạn nắm vững quy ước đặt tên trong JavaC# chắc bạn cũng thấy sự tương đồng nào đó trong các quy ước trên.

Chúc bạn có những dòng code PHP chất lượng cao!

Hẹn gặp lại :o)

Bài viết liên quan nên đọc: Coding conventions – Lạt mềm buộc chặt


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

13 thoughts on “[PHP]Quy ước đặt tên – Naming Conventions

  1. Coding Convention thì thực ra tùy văn hóa của mỗi team phát triển thôi. 🙂 Không nên ép các team phải theo cái này theo cái kia. Miễn là họ có Coding Convention là được. Đối với các dự án open thì nên tuân theo chuẩn công nghiệp là tốt nhất.
    Các dự án open source PHP thường tuân theo một trong hai chuẩn sau:
    1. PEAR (http://pear.php.net/manual/en/standards.php)
    2. Zend (http://framework.zend.com/manual/en/coding-standard.html).
    Một số lại có Coding Convention phát triển dựa trên một trong hai thằng trên cộng thêm một số quy ước riêng, ví dụ dự án WordPress.

    1. Nói chung Coding Convention, Naming Convention không chỉ là đối với mỗi team, vì các dự án lớn kiểu FOSS chẳng hạn nếu không có quy định chung thì chắc là khó cộng tác được với nhau được.

      1. Anh ơi. Ý em là không nên nói rằng PHP quy ước thế này thế nọ. Những người mới họ không hiểu tường tận dễ nhầm tưởng rằng “phải viết thế này mới đúng”, “PHP quy định như vậy”. Kì thực thì PHP chẳng có quy ước nào dành cho các dev sử dụng ngôn ngữ của họ cả.
        Nguyên nhân thì chắc anh đã hiểu. Nếu là một dự án, một công ty phát triển phần mềm thì quyền quyết định các tài liệu Convention của dự án là do trưởng dự án quyết định. Họ thích đặt thế nào là quyền của họ. Chẳng hạn ở một số dự án công ty, nhân sự xuất thân phần lớn từ dân Java nên họ dùng luôn Java Convention thì cũng chẳng sao cả nếu dự án của họ là nội bộ. Bài viết chỉ nên dừng lại ở việc đưa ra tầm quan trọng của Coding (hoặc Naming) Convention và một số best practice mà các PHP Dev của các dự án FOSS PHP nổi tiếng hay dùng là đẹp rồi ạ.

      1. Liệu hiểu thế này có sai không thầy 😀
        – Hàm: tập hợp các mã lệnh xử lý một tác vụ nào đó (nói chung). Nếu so sánh với procedure thì hàm trả về giá trị còn procedure thì không.
        – Phương thức: là một trường hợp của hàm; đó là khi hàm thuộc một Class

        1. Hàm đôi khi cũng không trả về giá trị mà bạn, hàm với void chẳng hạn 🙂

  2. Các thầy không có chuyên mục gì hướng dẫn về LDAP,SSO(Single Sign On),Pubcookie … ạ
    Hiện nay bọn em đi làm rất cần các kiến thức đó ạ
    Em Cảm ơn các thầy

Leave a Reply

Your email address will not be published. Required fields are marked *