Zacznijmy może od tego że we własnych projektach mamy więcej możliwości jeżeli chodzi o dobór standardu opisującego nazwy. W pracy już tak kolorowo często nie ma - jeden z góry określony standard, którego się trzymasz (co ma swoje logiczne uzasadnienie).
Ja opiszę tylko i wyłącznie swoje podejście do nazewnictwa, które sam sobie wyrobiłem wraz ze zdobywaniem doświadczenia - ustosunkowane jest to własnym stylem programowania jak i subiektywnym ocenieniem co w praktyce jest bardziej korzystne. Poza tym duży wpływ na mój styl miała książka "Kod doskonały. Jak tworzyć oprogramowanie pozbawione błędów". Wydaje mi się że i tak zdecydowanie bardziej istotnym czynnikiem jest stosowanie właściwie dobranych nazw dla danych typów, funkcji, zmiennych itp. Jeżeli wcześniejsza kwestia nie jest spełniona to żadna konwencja nie zda egzaminu, chociażby nie wiadomo jakby nie była dobrze przemyślana:
Kopiuj
int x, y, pf, k, kk, anty_nie_wiadomo_co;
std::string bardzo_lubie_swoja_klawiature_wiec_sobie_pisze_dlugie_nazwy_zmiennych = "a co mi tam!";
float tuBedzieCosFajnego = 0.0;
Być może jest to przerysowane, jednakże nie jeden kwiatek tego typu zdarzył się na 4p.
Nazwy klas - FooClass.
W żadnym wypadku żadne przedrostki "C" np. CFooClass - gdy pierwszy raz spotkałem się z takim stylem zarysowało się moim umyśle tylko jedno wielkie CWtf!
FOO_CLASS to już w ogóle jakieś totalne nieporozumienie.
Nie przepadam również za przedrostkami "I" np. IFooClass, chociaż już ma większy sens zastosowania aniżeli przykład z przedrostkiem C.
Jeżeli klasa jest implementacją jakiegoś wzorca projektowego to wówczas używam takiej składni: FooClass_Factory, FooClass_State itp.
Instancje klas: lowerCamelCase, bez żadnych notacji węgierskiej, która imho to zwykły przerost formy nad treścią - bardziej przeszkadza niż w rzeczywistości pomaga. Warta uwagi jest konwencja nazewnictwa zmiennych dla kontrolek gui, np. buttonExit. Początkowo sam mieszałem w dwóch stylach: buttonExit oraz exitButton. Zdecydowałem się jednak na pierwsze rozwiązanie z bardzo prostej przyczyny - auto-uzupełnianie nazw w środowisku/edytorze. Po wpisaniu "button" i np. ctrl+enter (czy też ctrl+spacja) i boom - mam już wszystkie przyciski. Tym sposobem nie muszę przeszukiwać w myślach za co dana kontrolka jest odpowiedzialna - to mi podpowie samo środowisko - wiem tylko że chodzi mi o knefel i tyle ;]
Funkcje składowe lowerCamelCase:
void fooFunction();
Nazwy dla argumentów funkcji to już bardziej złożona sprawa. Kiedyś stosowałem przedrostek _ lub pf i fa, lecz uznałem iż jest to zupełnie niepotrzebne. Jeżeli mówimy o konstruktorach to wszystkie nazwy zapisane są tak samo jak pola składowe. Jeżeli funkcja jest zwykłym setterem to np.
Kopiuj
void Foo::setAge( int newAge ) { age = newAge; }
Proste i zrozumiałe.
Co do samych nazw funkcji składowych to w zależności od ich zastosowania dodaję prefiksy. Wiadomo settery i gettery z odpowiednimi przedrostkami set i get:
void setAge;
int getAge;
Funkcje zwracające wartość logiczną z przedrostkiem "is", np:
bool Foo::isStupid() const { return stupid; }
Co do samych składowych, to tutaj wychodzę z prostego założenia. Jeżeli piszę coś prostego to przeważnie nie używam żadnego rozbudowanego środowiska z rozmaitymi smerfnymi hitami w stylu panel "symbol browser" czy jak tam zwał. Korzystając ze zwykłego notepad++ (bez żadnych pluginów), nie ma tego typu rzeczy. Jednakże taki projekt jest na tyle prosty iż nie ma możliwości abym gdzieś się zastanawiał: "czy jakaś nazwa reprezentuje składową, argument funkcji, zmienną zdefiniowaną w danej funkcji or whatever". Natomiast w większych projektach, które mogą utrudnić sprawną pracę używam odpowiedniego środowiska. Na wierzchu otwarty wcześniej wymieniony panel - no problem. Nie potrzebuję przedrostków typu m_skladowa lub skladowa, czy też skladowa, z czego pierwsza wersja nota bene brzydko wygląda ;]
consty, enumy, define'y - FOO. W przypadku enum'ów, dodatkowo poprzedzam zastosowanie dla danej stałej np:
enum GameState = { STATE_PAUSE, RUN_STATE }; itp.
Makra też z dużej.
Poza tym, nie wiem dlaczego, ale nie lubię nazw zmiennych w forach i innych pętlach typu: i,j,k,x,y,z itd. Wolę jednoznacznie określić że coś jest np indeksem z jakiegoś tam kontenera, lub nadać nazwę row i column zamiast i oraz j w zagnieżdżonych forach, przy wyborze czegoś z tablicy 2d.
To tak w skrócie, co mi do głowy teraz przyszło. Każdy wyrabia swój styl, który bardziej mu odpowiada.