Pertama-tama mari kita sepakat bahwa SEMUA UPPERCASE adalah merusak pemandangan dan harus diminimalkan.
Dalam C dan C ++ karena itu digunakan sebagai konvensi untuk makro, dan makro saja, karena makro sama jeleknya, tidak untuk mengatakan kejahatan.
Awal C tidak memiliki const, jadi konstanta harus dinyatakan sebagai makro. Selain itu, pada masa-masa awal program jauh lebih pendek, sehingga praktik yang tidak baik hari ini dapat digunakan (misalnya IIRC Brian Kernighan menulis kode dengan banyak makro non-huruf besar). Dan juga, pada masa itu keyboard yang tidak memiliki huruf kecil memang ada; Saya menggunakan satu seperti itu, di komputer Norwegia Tandberg EC-10, sekitar 1980 atau 1979 saya pikir itu.
Jadi, Java mengambil konvensi huruf besar untuk konstanta dari awal C. Sementara itu, dan mungkin bahkan sebelum itu (saya tidak yakin kronologi di sini), C mendapat konstanta. Namun, sementara tentu saja beberapa / banyak programmer C terjebak dalam konvensi-oleh-kebutuhan sebelumnya sebagai makro huruf besar, programmer C ++ lebih masuk akal.
Masalah besar saat ini adalah ketika orang-orang diajarkan Java pertama, atau C (dengan konvensi dari abad pertengahan) pertama, dan kemudian datang ke C ++, membawa konvensi huruf besar busuk itu bersama mereka.
Begitu,
int const answer = 42; // Nice, good, OK.
const int ANSWER = 0x2A; // Ouch!
#define COMPANYNAME_ANSWER 052 // Oh kill me, please.
Yah Anda mungkin berpikir saya menyebutkan keyboard hanya huruf besar bercanda. Oh tidak. Karena itu hanyalah batasan teknologi tertua dan paling kuno yang mendorong konvensi penamaan, atau paling tidak memengaruhi betapa salah / benarnya mereka. Selanjutnya, ada masalah transmisi serial 7-bit, yang menyebabkan masalah terkait dengan kode karakter (pengkodean karakter kertas koran) yang digunakan, yang berarti Anda harus membatasi diri pada huruf-huruf alfabet bahasa Inggris, A hingga Z.
Sebenarnya saya sarankan tetap melakukan itu. Di situlah kita berada! Kami belum mendapatkan lebih jauh.
Saat ini, pada 2011, standar C ++ mendukung Unicode umum dalam nama (dan telah melakukannya sejak 1998), sedangkan implementasi C ++ yang sebenarnya tidak. Khususnya kompilator g ++ adalah karakter nasional yang ditantang. Ini bermula dari keterbatasan teknologi zaman kegelapan itu.
Begitu,
double blueberryJamViscosity = 0.0; // OK
double blåbærsyltetøyViskositet = 0.0; // Ouch!
Akhirnya, tentang masalah garis bawah versus huruf besar diselingi,
- Cadangan formulir yang mudah dikenali untuk nama jenis.
- Cadangan SEMUA UPPERKASE untuk makro.
- Bersikaplah konsisten.
Saya pikir itu itu, sungguh, kecuali untuk aturan seperti "umumnya menghindari nama satu huruf kecuali untuk (loop, template param, bla bla)", dan "hindari menggunakan l, mudah bingung dengan 1" dan "hindari huruf besar O, mudah bingung dengan 0 ". Selain itu, tentu saja, hindari menggunakan nama yang dicadangkan seperti mulai dengan garis bawah diikuti dengan huruf besar, berisi dua garis bawah berturut-turut, atau mulai dengan garis bawah dan berada di ruang nama global.
Ceria & hth