2009-09-14 36 views

Trả lời

8

Bạn không nên sử dụng tiền tố gạch dưới. Nó được dành riêng để thực hiện theo chuẩn C++ 17.4.3.1.2/1:

Một số bộ tên và chữ ký chức năng đang luôn dành cho việc thực hiện:

  • Mỗi tên có chứa dấu gạch dưới kép (_ _) hoặc bắt đầu bằng dấu gạch dưới theo sau là một chữ cái viết hoa (2.11) được dành riêng cho việc triển khai cho bất kỳ việc sử dụng nào.
  • Mỗi tên bắt đầu bằng dấu gạch dưới được dành riêng cho việc triển khai để sử dụng làm tên trong không gian tên chung.

Bạn có thể xem Google C++ coding style.

+1

Dấu gạch dưới đơn chỉ được dành riêng trong không gian tên * chung *. Điều đó nói rằng, tôi thích m_ cho mã C++. –

+0

Không, chúng được dành riêng cho việc triển khai. Và việc triển khai sử dụng chúng trong không gian tên chung. –

+2

Và đây là cách định dạng chiến tranh bắt đầu ... Tôi đồng ý với khoảng 1/2 nguyên tắc mã google. 1/2 khác chỉ là IMO sai. Lời khuyên tốt nhất trên trang đó là "Sử dụng ý thức chung và ĐƯỢC ƯU TIÊN." – Glen

1

Cá nhân tôi sẽ khuyên bạn nên bắt đầu biến thành viên với m_ và phương pháp accessor với get và set tiền tố, ví dụ .: m_age và int getAge() {}.

Đối với một nguyên tắc thiết lập các quy ước đặt tên và thông lệ tốt nhất đọc hai cuốn sách này:

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1/187-8545911-6271721?ie=UTF8&s=books&qid=1252936825&sr=8-1 (phong cách lập trình nói chung)

http://www.amazon.com/Coding-Standards-Rules-Guidelines-Practices/dp/0321113586/ref=sr_1_1/177-5450861-2480140?ie=UTF8&s=books&qid=1252936836&sr=8-1 (C++ cụ thể)

0

Điều này thực sự khác nhau từ người này sang người. Cá nhân tôi đi cho "int _age" với "getAge()" và "setAge (...)". Nó là khá phổ biến để sử dụng tên với động từ cho các phương pháp để có được một cảm giác cho những gì nó làm. Chỉ cần gọi một phương thức "tuổi" có thể hơi khuếch tán. Nhưng một lần nữa, đó là tất cả về hương vị.

0

Tùy thuộc. Tôi thích sử dụng:
_age cho các trường
getAge và setAge cho phương thức truy nhập
Đơn giản chỉ là vấn đề phong cách ... nhưng nếu bạn đặt trước phương thức accessor với get/set, mã của bạn sẽ rõ ràng hơn (I ' m giả sử bạn đang làm việc trong C++)

3

Tôi khuyên bạn nên chống lại dấu gạch dưới hàng đầu. Những cái bạn đang sử dụng là hợp pháp, nhưng vì một số tên bắt đầu bằng dấu gạch dưới được dành riêng cho việc triển khai, tôi muốn tránh chúng hoàn toàn.

Tôi ở đâu, chúng tôi sử dụng m_, chẳng hạn như m_age, để đại diện cho thành viên. Nó hoạt động khá tốt.

Ngoài ra, bạn có ấn tượng rằng bạn nên có người truy cập cho tất cả thành viên của lớp học không? Các chức năng công cộng nên trưng ra hành vi của lớp, chứ không phải các thành viên lớp.

11

Hai điều:

1) Tránh sử dụng dấu gạch dưới hàng đầu. Quy ước chung là các nhà cung cấp trình biên dịch sử dụng cả dấu gạch dưới và dấu gạch dưới kép làm phương tiện để giới thiệu từ khóa. Ví dụ, ___declspec trong Microsoft Visual C++. Đó là lý do tại sao bạn thấy dấu gạch dưới sau (ví dụ: int foo_;) trong một số tài liệu C++.

2) Không có câu trả lời cho câu hỏi của bạn. Xin lỗi vì vô ích. Cộng đồng C++ không giống các cộng đồng khác về mặt này. Sun đã thiết lập một tiêu chuẩn phong cách cho Java. Microsoft đã ghi lại một tiêu chuẩn phong cách trong MSDN cho C#. Các cộng đồng khác có xu hướng theo phong cách của tác giả ngôn ngữ lập trình. "Làm thế nào để van Rossum viết Python?" hoặc "Làm thế nào để Matz viết Ruby?" Bạn không thấy điều này trong C++. Mặc dù có một phong cách dứt khoát đối với sách của Stroustrup, không ai theo dõi nó. Ngay cả những con số C++ đáng chú ý nhất đều có phong cách riêng của họ.

Lời khuyên duy nhất tôi có thể cung cấp là nhất quán. Nó không quan trọng bạn chọn kiểu nào.

(Lưu ý: điều này đến từ một người bị OCD. Tôi có thể hiểu nỗi đau khi không có câu trả lời dứt khoát về chủ đề này. Tuy nhiên, tôi càng nhận được càng nhiều thì càng tiết lộ vấn đề.)

Các vấn đề liên quan