2013-06-12 47 views
5

Trong các công ty tôi đã làm việc, tôi đã thấy rất nhiều tiền tố để chỉ ra phạm vi hoặc nguồn gốc của các biến, ví dụ m cho các thành viên của lớp học, i cho phương pháp biến tập và a (hoặc p) cho thông số phương thức:Các tên biến tiền tố để biểu thị phạm vi hoặc nguồn gốc của chúng?

public class User { 

    private String mUserName; 

    public String setUserName(final String aUserName) { 
     final String iUserName = "Mr " + aUserName; 
     mUserName = iUserName; 
    } 

} 

Bạn nghĩ gì về nó? Được khuyến nghị (hoặc chính xác không)? Tôi thấy nó khá xấu xí trong giai đoạn đầu tiên, nhưng tôi càng sử dụng nó, tôi càng thấy nó khá tiện lợi khi làm việc trên các phương pháp lớn chẳng hạn.

Xin lưu ý rằng Tôi không nói về ký hiệu Hungary, trong đó tiền tố cho biết loại chứ không phải phạm vi.

+1

Tôi không thích, nhưng có thể nó có thể giúp người khác xem xét mã. BTW, có rất nhiều mXXX trong Android Source. – StarPinkER

+1

Tiền tố cá nhân thêm các loại dữ liệu tín hiệu làm tôi khó chịu, đặc biệt khi các kiểu dữ liệu được thay đổi và các biến không được tái cấu trúc. Trình gỡ lỗi sẽ hiển thị cho bạn loại dữ liệu. Không có gì tệ hơn là không thông tin. Chỉ cần dính vào các quy ước Java thông thường; CamelCase cho tên lớp, thisCase cho tên chức năng, vv – Bathsheba

+0

Tôi nghĩ rằng trong một nhóm gồm hơn 2 lập trình viên khá hữu ích để biến mọi biến trở thành dễ hiểu nhất có thể. Nếu tôi tự lập trình, tôi sẽ không sử dụng nó. – TheOneAndOnly

Trả lời

1

Tôi cũng đã từng làm việc trong các cửa hàng có yêu cầu ký hiệu tiền tố cứng nhắc, nhưng sau một thời gian, mã này đã phát triển và các biến toàn cục bị rò rỉ từ mọi nơi cho thấy mã/đánh giá kém.

"Điều này" của Java ký hiệu là cách được ưu tiên để tham chiếu một trường, trên một địa phương. Việc sử dụng tiền tố "m" cho các biến đã được phổ biến bởi công ty "Micro .." đó là một mánh lới quảng cáo xây dựng thương hiệu (họ thậm chí còn nói "không sử dụng điều đó vì chúng tôi làm").

Quy tắc chung tôi tuân theo là đặt tên biến theo những gì nó được sử dụng để lưu trữ. Tên biến chỉ đơn giản là một bí danh. Nếu nó lưu trữ một tên người dùng, thì userName là hợp lệ. Nếu đó là danh sách tên người dùng, thì userNames hoặc userNameList là hợp lệ. Tuy nhiên, tôi tránh bao gồm "loại" trong tên biến bây giờ, vì loại thay đổi khá thường xuyên (không phải tập hợp tên người dùng là tập hợp, trong thực tế? ...)

Tại cuối ngày, nếu tên biến là hữu ích để bạn nhớ những gì mã đã làm xuống đường, nó có lẽ là một ý tưởng tốt. Khả năng bảo trì và khả năng đọc được hiệu quả và cú pháp ngắn gọn "được nhận thức", đặc biệt là do các trình biên dịch hiện đại đang viết lại mã của bạn theo các mẫu sử dụng macro.

Tôi hy vọng điều này sẽ giúp phần nào và vui lòng cung cấp thêm chi tiết về mọi khiếu nại trong tài liệu này.

ps. Tôi đánh giá cao các yếu tố của phong cách Java cho các loại câu hỏi này. Tôi từng làm việc với các tác giả và họ là những thiên tài khi nói đến phong cách!