Sử dụng camelCase hay underscore?

Class, function, variable, property,… đều cần phải có tên. Có 3 chuẩn để đặt tên trong lập trình là: PascalCase, camelCase, underscore. PascalCase mặc định đã là chuẩn đặt tên cho class name, chúng ta sẽ chỉ quan tâm tới 2 chuẩn còn lại. Bạn đang dùng chuẩn nào trong việc lập trình của mình?
Ở đây mình không đi sâu về ngữ nghĩa mà chỉ thuần về "chính tả" thôi. Sở dĩ mình viết bài này vì hôm nay tá hỏa khi review code của thằng đệ, nó viết nhập nhằng cả 3 code standard này vào 1 class :( Tất nhiên bạn có thể đi theo cái “chuẩn của bạn”, không ai cấm. Nhưng đã public code, share code, review code, làm team thì bạn cần phải tuân theo chuẩn quốc tế hoặc ít nhất là chuẩn của team đó ;)
Trước tiên chúng ta hãy xem sự khác nhau giữa các chuẩn này:
  • PascalCase (Upper Camel Case) : $ThisIsVariable: đây là cách viết yêu cầu viết hoa chữ cái đầu tiên của mọi từ.
  • camelCase (Lower Camel Case): $thisIsVariable: viết hoa chữ cái đầu tiên của mọi từ. Chữ cái đầu tiên của cụm từ viết thường.
  • underscore: $this_is_variable: tất cả các từ đều viết thường. Dùng dấu gạch dưới ngăn cách giữa các từ.

Sử dụng trong CMS, Framework

Vậy chúng ta nên dùng chuẩn nào để đặt tên các thành phần của PHP? Câu trả lời rất đơn giản: bạn hãy follow theo standard của platform mà bạn đang làm việc. Hãy nghía qua bảng sau để biết chuẩn của một số CMS, framework thông dụng
Note: với Constants, tất cả đều viết hoa và có dấu gạch dưới phân cách (VD: POST_PER_PAGE,…)

Các CMS, framework đều có một phần doc nói về Coding Standard của nó. Các bạn nên chú ý để follow đúng.

Sử dụng trong code thuần

Âu cơ. Trong code thuần, không sử dụng các CMS, framework, bạn cũng cần có chuẩn đặt tên. Code thuần ở đây có thể là các CMS “made by you” hoặc đơn giản là snippets code. Không thể đang trập trùng kiểu camelCase lại hứng lên thêm vài cái gạch như underscore hoặc chán lên lại viết hoa chữ cái đầu cho đẹp như PascalCase.
Đối với bản thân mình, cách đặt tên của mình follow theo chuẩn sau:
  • Class Name: theo PascalCase (MyClass, BlockUserClass,…)
  • Function, method: theo camelCase (getUser, getUserBlock,…)
  • Variable: theo camelCase ($userBlock, $postStatus,…)
  • Constants : viết hoa hết (POST_PER_PAGE, REQUEST_LIMIT,…)
  • Khi return về API (json, xml,…) thì naming theo chuẩn underscore.

Tổng kết

Hãy tập sử dụng thống nhất 1 chuẩn naming để có thể phát triển tốt hơn trong môi trường lập trình hiện nay. Code của bạn không phải chỉ mỗi mình bạn đọc, bạn hiểu. Mình không xui các bạn phải follow theo chuẩn của mình cũng như chuẩn của người khác. Chỉ muốn các bạn có ý thức từ những việc nhỏ nhặt nhất như đặt tên thành phần theo chuẩn. Không ai muốn review một bộ code mà có 2 3 coding standard trong đó cả ;)
Nếu thích bài viết này, hãy subscriber blog của mình nhóe. Cám ơn các bạn đã đọc bài viết ;)