Trước tiên, hãy đồng ý rằng TẤT CẢ NHỮNG LỜI NÓI là một chướng mắt và nên được giảm thiểu.
Do đó, trong C và C ++, nó được sử dụng như một quy ước cho các macro và chỉ các macro, bởi vì các macro đều xấu như nhau, không nói xấu.
Đầu C không có const, vì vậy hằng số phải được biểu thị dưới dạng macro. Ngoài ra, trong những ngày đầu đó, các chương trình ngắn hơn rất nhiều, do đó, các thực tiễn không tốt ngày nay có thể được sử dụng (ví dụ: IIRC Brian Kernighan đã viết mã với rất nhiều macro không viết hoa). Và ngoài ra, vào thời đó, bàn phím không có chữ thường đã tồn tại; Tôi đã sử dụng một cái như vậy, trên máy tính Na Uy Tandberg EC-10, khoảng 1980 hoặc 1979 tôi nghĩ là vậy.
Vì vậy, Java đã chọn quy ước viết hoa cho các hằng từ đầu C. Trong khi đó, và có lẽ ngay cả trước đó (tôi không chắc về niên đại ở đây), C có các hằng số. Tuy nhiên, trong khi tất nhiên một số / nhiều lập trình viên C đã bị mắc kẹt trong quy ước trước đây của các hằng số là các macro chữ hoa, các lập trình viên C ++ lại hợp lý hơn.
Vấn đề lớn hiện nay là khi mọi người được dạy Java trước, hoặc C (với các quy ước từ thời trung cổ) trước, sau đó đến C ++, mang theo quy ước viết hoa xấu đó với họ.
Vì thế,
int const answer = 42; // Nice, good, OK.
const int ANSWER = 0x2A; // Ouch!
#define COMPANYNAME_ANSWER 052 // Oh kill me, please.
Vâng, bạn có thể nghĩ rằng tôi đã đề cập đến bàn phím chỉ viết hoa trong trò đùa. Ôi không. Bởi vì đó đơn thuần là giới hạn công nghệ cổ xưa nhất, lâu đời nhất đã thúc đẩy các quy ước đặt tên, hoặc ít nhất ảnh hưởng đến mức độ sai / đúng của chúng. Tiếp theo, có vấn đề về truyền nối tiếp 7 bit, gây ra các vấn đề tương ứng với mã ký tự (mã hóa ký tự báo), điều đó có nghĩa là bạn phải hạn chế các chữ cái trong bảng chữ cái tiếng Anh, từ A đến Z.
Thật ra tôi khuyên bạn vẫn nên làm điều đó. Đó là nơi chúng ta đang ở! Chúng tôi không có thêm.
Hiện tại, kể từ năm 2011, C ++ tiêu chuẩn hỗ trợ Unicode chung trong các tên (và đã được thực hiện từ năm 1998), trong khi việc triển khai C ++ thực tế thì không. Cụ thể, trình biên dịch g ++ là nhân vật quốc gia bị thách thức. Nó bắt nguồn từ giới hạn công nghệ thời kỳ đen tối.
Vì thế,
double blueberryJamViscosity = 0.0; // OK
double blåbærsyltetøyViskositet = 0.0; // Ouch!
Cuối cùng, về chủ đề của dấu gạch dưới so với chữ in hoa xen kẽ,
- Dự trữ một hình thức dễ dàng nhận ra cho tên loại.
- Dự trữ TẤT CẢ TĂNG TRƯỞNG cho các macro.
- Hãy kiên định.
Tôi nghĩ rằng, thực sự, ngoại trừ các quy tắc như "thường tránh tên một chữ cái ngoại trừ (vòng lặp, mẫu param, blah blah)" và "tránh sử dụng l, dễ nhầm với 1" và "tránh viết hoa O, dễ nhầm lẫn với 0 ". Ngoài ra, tất nhiên, tránh sử dụng các tên dành riêng như bắt đầu bằng dấu gạch dưới, theo sau là chữ hoa, chứa hai dấu gạch dưới liên tiếp hoặc bắt đầu bằng dấu gạch dưới và nằm trong không gian tên toàn cục.
Chúc mừng & hth