Không tuân thủ các quy ước đặt tên

Không tuân thủ các quy ước đặt tên

Một trong những lỗi nghiêm trọng mà người lập trình có thể phạm phải là định nghĩa một quy ước đặt tên tồi. Tôi đã tiếp quản nhiều dự án mà trong đó tôi phải bỏ ra rất nhiều thời giờ chỉ để hiểu chương trình, do lập trình viên đặt tên các biến là $fred và $barney thay cho $email và $name.

Tôi đang đề cập đến một dự án mà người lập trình cũ đã quyết định đưa vào toàn bộ chương trình một kiểu đặt tên kì lạ (a Flinstones naming theme), không phải tôi đùa đâu.
Cách bạn đặt tên biến và hàm là trung tâm của việc xây dựng một chương trình dễ đọc. Có nhiều lập trình viên phạm lỗi khi đặt tên biến và hàm mà nó:

  • quá dài hoặc quá ngắn
  • không liên quan đến ngữ cảnh
  • không để ý đến cách-viết-phân-biệt (case sensitivity)
  • ngăn cản khả năng dễ đọc (đặc biệt là các hàm)
1. Đặt tên biến
1.1. Cách viết phân biệt

Trong PHP, tên biến có cách viết phân biệt, nghĩa là $user và $User là hoàn toàn khác nhau. Vài người dùng lợi dụng điểm này để đặt các biên cùng tên nhưng khác cách viết. Đây là một thói quen tồi tệ. Cách viết không bao giờ nên dùng để phân biệt các biến khác nhau. Mỗi tên biến, trong cùng tầm vực (scope), nên có là tuyệt đối duy nhất.

1.2. Tên quá ngắn

Nhiều người sử dụng những chữ viết tắt đầu (cryptic acronym) bí ẩn cho các biến của họ, để rồi sau này hối tiếc vì quên mất họ đã muốn ám chỉ điều gì khi đó. Tên biến nên mô tả nội dung nó (sẽ) chứa, dùng nguyên từ hoặc những chữ viết tắt có thể hiểu được.

1.3. Tên quá dài

Ở khía cạnh khác, vài người lại sử dụng tên biến quá dài. Nói chung, tên biến không nên dài quá hai từ. Hai từ có thể được tách biệt bằng dấu phân cách “_” hoặc là viết hoa chữ đầu của từ thứ hai.

1.4. Thói quen tốt

Dưới đây là những thí dụ tốt về tên biến

Mã lệnh (PHP)

$username = ‘sterling’;
$password = ‘secret’;
$teachers = array (‘Sadlon’,
‘Lane’,
‘Patterson’,
‘Perry’,
‘Sandler’,
‘Mendick’,
‘Zung’);
foreach ($teachers as $teacher);
1.5. Thói quen xấu

Dưới đây là những thí dụ (phóng đại) về những tên biến tồi

Mã lệnh (PHP)

$username_for_database = ‘sterling’;
$guMbi = ‘secret’; // for the $password
$thelastnamesofteachers = array (‘Sadlon’,
‘Lane’,
‘Patterson’,
‘Perry’,
‘Sandler’,
‘Mendick’,
‘Zung’);
foreach ($thelastnamesofteachers as $TeaChER);
2. Đặt tên hàm
Mọi khái niệm áp dụng cho tên biến cũng áp dụng cho đặt tên hàm. Tuy nhiên, ngữ pháp đóng vai trò đặc biệt trong các hàm.
Các hàm PHP, định nghĩa sẵn hoặc do người dùng định nghĩa, là không-phân-biệt-cách-viết (not case sensitive)
2.1. Dùng động từ

Hàm của PHP tương đương với một động từ khi nói. Tên hàm, do đó, nên được hướng hành động (action oriented). Nó cũng nên được dùng ở thì hiện tại.

Thí dụ, bạn có một hàm tạo một số ngẫu nhiên với phân bố Gausse (a gaussian random number), bạn nên đặt tên nó là generate_gaussian_rand().

Chú ý các sử dụng động từ hành động trong tên hàm. Nó sẽ đặt hàm vào ngữ cảnh thích hợp

Mã lệnh (PHP)

<?php
list ($num1, $num2) = generate_gaussian_rand();
list ($num3, $num4) = generate_gaussian_rand();
?>

Để so sánh, hãy xem thí dụ:

Mã lệnh (PHP)

<?php
list ($num1, $num2) = gaussian_rand_generator();
list ($num1, $num2) = gaussian_rand_generator();
?>
Bạn có thấy sự khác biệt? Thí dụ thứ hai sử dụng danh từ, mặc dù vẫn chuyển tải được mục tiêu của hàm, nhưng nó ngăn người ta đọc một cách trôi chảy.