Chociaż tutaj będę odnosił się konkretnie do konwencji nazewnictwa C ++ i Bjarne Stroustrup , w zasadzie widziałem, że ludzie używają nieco podobnych reguł dla innych języków tu i tam.
Zatem podstawową ideą jest to, że podczas czytania kodu należy odróżniać typy standardowe od typów zdefiniowanych przez użytkownika . Na przykład Bjarne Stroustrup sugeruje, aby użyć
pierwsza wielka litera dla typów (np. kwadrat i wykres)
który, biorąc pod uwagę to
Język C ++ i standardowa biblioteka nie używają wielkich liter
pozwala osiągnąć cel wymieniony powyżej.
Ale dlaczego musimy to zrobić? Jaki może być cel rozróżnienia typów standardowych i zdefiniowanych przez użytkownika?
Nie mogłem znaleźć żadnego rozumowania Bjarne Stroustrup w tej sprawie, a poza tym sam myślę w diametralnie przeciwny sposób. : Wiem, wiem: „Kim jestem, aby spierać się ze Stroustrupem?” Ale posłuchaj, kilka funkcji języka C ++, np. Przeciążenie operatora, służy temu, aby typy zdefiniowane przez użytkownika miały podobny poziom wsparcia składniowego jak typy standardowe. A potem wszystko to jest zaskoczone inną dyscypliną nazewnictwa ...
PS Nie wspominając już o tym, że często jedno słowo nie wystarcza do nazwania klasy, a słowo oddzielone podkreśleniem, które zaczyna się od dużej litery, wygląda tak obco.
źródło
Odpowiedzi:
Nie ma w tym absolutnie żadnego celu ani korzyści. Jednym z celów C ++ było wymienne traktowanie UDT i prymitywów, i chociaż nie do końca się udało, jest to obszar, w którym nie trzeba różnicować.
Jeśli chodzi o nazewnictwo, Stroustrup jest szalony i jest to naukowo udowodniony fakt.
źródło
snake_case
w swoich klasach i przestrzeniach nazw i nie miałem z tego powodu żadnych problemów - ani zamieszania.Konwencje nazewnictwa dotyczą wspierania zrozumienia kodu przez człowieka (tj. Programistę i opiekuna).
UDT można określić tak, aby deklaracja zmiennych, inicjalizacja, wyrażenia i instrukcje działały na nich inaczej niż w przypadku typów standardowych. W celu znalezienia problemu przydatne jest, aby opiekun miał jakąś wskazówkę, że jakaś sekcja kodu może robić fajne rzeczy (np. Implementacja zdefiniowanego przez użytkownika typu integralnego używanego w niektórych funkcjach może mieć wadę w sposobie dodawania).
Istnieje wiele sposobów dostarczania takich wskazówek (komentarze, specyfikacje projektowe itp.). Zaletą konwencji nazewnictwa jest to, że są one obecne w kodzie, podczas gdy komentarze można pominąć, nieaktualne itp.
źródło
Jednym z powodów, dla których używam wielkich liter dla typów, jest odróżnianie zmiennych od typów. Pozwala to zadeklarować zmienną, która oprócz wielkich liter ma tę samą nazwę:
Może to być przydatne w przypadku klas, w których w każdym kontekście jest używana tylko jedna instancja, np. Ustawienia konfiguracji.
źródło