Давайте спочатку погодимось з тим, що ВСЕ ПІДГОТОВЛЕННЯ - це очі, і їх слід мінімізувати.
Тому в C і C ++ він використовується як умова для макросів, і лише макросів, оскільки макроси однаково некрасиві, не кажучи про злі.
На початку C не було const, тому константи доводилося виражати як макроси. Крім того, в ті часи програми були набагато коротшими, так що практичні, які є недобрими сьогодні, можна було б використовувати (наприклад, IIRC Брайан Керніган написав код з великою кількістю макросів, що не мають великих літер). А також у ті часи існували клавіатури, які не мали малих літер; Я використовував один такий, на комп'ютері норвезького Тандберга EC-10, приблизно 1980 або 1979 роки, я думаю, що це було.
Отже, Java зібрала конвенції великих літер для констант з раннього часу C. Тим часом, а можливо, навіть до цього (я не впевнений у хронології тут), C отримав константи. Однак, хоча, звичайно, деякі / багато програмістів С були застрягли в попередній конвенції за потребою констант як великих макросів, програмісти C ++ були більш чутливими.
Зараз велика проблема полягає в тому, коли люди навчають спочатку Java, або С (спочатку середніх віків), а потім приходять до С ++, беручи з собою цю неприємну велику угоду.
Так,
int const answer = 42; // Nice, good, OK.
const int ANSWER = 0x2A; // Ouch!
#define COMPANYNAME_ANSWER 052 // Oh kill me, please.
Добре, ви могли подумати, що я жартома згадував лише великі клавіатури. О ні. Тому що це лише найдавніше, найархаїчніше обмеження технологій, яке призвело до конвенцій іменування, або, принаймні, вплинуло на те, наскільки вони неправильні / правильні. Далі виникла проблема 7-бітної послідовної передачі, яка спричинила відповідні проблеми із використовуваними кодами символів (новомовними кодовими символами), що означало, що вам доведеться обмежитися літерами англійського алфавіту, від A до Z.
Насправді я рекомендую все одно це робити. Ось де ми є! Ми не дійшли далі.
На даний момент, станом на 2011 рік, стандартний C ++ підтримує загальний Unicode в іменах (і це робиться з 1998 року), тоді як реальні C ++ реалізації не мають. Зокрема, компілятор g ++ є викликом національного характеру. Це випливає з того темного століття технологічного обмеження.
Так,
double blueberryJamViscosity = 0.0; // OK
double blåbærsyltetøyViskositet = 0.0; // Ouch!
Нарешті, з приводу підкреслення проти перекреслених великих літер,
- Зарезервуйте легко розпізнавану форму для імен типів.
- Зарезервуйте ВСЕ ПІДТРИМКА для макросів.
- Будьте послідовними.
Я думаю, що це насправді, за винятком правил типу "взагалі уникайте однолітерного імені, крім (цикл, параметр шаблону, бла-бла)", і "уникайте використання l, легко плутайте з 1" і "уникайте великих букв O, легко плутайте з 0 ". Також, звичайно, уникайте використання зарезервованих імен, наприклад, починаючи з підкреслення з наступним великим регістром, що містить два послідовних підкреслення, або починати з підкреслення і знаходитись у глобальному просторі імен.
Ура & hth