Mam problem ze zrozumieniem, jak zastosować składnię camelCase do niektórych nazw zmiennych.
Na przykład, jak poprawnie napisać słowo „numer telefonu” w przypadku wielbłąda? Czy to phoneNumber
czy phonenumber
? Podobnie jest z „username”, jest to username
albo userName
?
Myślę, że to nie wygląda dobrze z przypadku wielbłąda jak motorCycle
, passWord
, sunDay
, setUp
lub waveLength
, ponieważ są to tylko jedno słowo każdego. Myślę, że może to być powód, dla którego się nazywa, hashMap
ale także hashtable
w przypadku wielbłądów bez kapitału w ostatnim przypadku, ponieważ tablica skrótów to jedno słowo, a mapa skrótów to dwa słowa.
Ale jeśli motocykl ma kolor, to czy byłoby tak, motorcycleColor
ponieważ słowo jest konkatenowane? Czy to prawda, czy też powinna być phoneNUmber
, waveLength
, sunBlock
a nawet sunDay
w niedzielę tygodnia?
Dlaczego na przykład metoda jest wywoływana, getISOCountries
gdy mówi HttpHeaders
np. Nie jest jasne, co stanie się małymi literami, jeśli mamy metodę taką jak String camelCaseString = dog.toCamelCase()
lub interface CamelCase
.
username
jest tym, czym jest, jest to znak wywoławczy, a nie „nazwa użytkownika”, więc bardziej przypomina motocykl niż imię lub nazwisko (które powinno być zamaskowane)street
powinna to być klasa iname
jeden z jej atrybutów / elementów danych.Odpowiedzi:
Powinieneś wpisać wielką literę po tym, gdzie „normalnie” będzie spacja (kiedy napiszesz literę zamiast kodu źródłowego). Twoje pierwsze założenie jest prawidłowe:
motorcycle
, a niemotorCycle
.hashMap
niehashmap
.sunday
niesunDay
.dayOfWeek
, niedayofweek
.źródło
hashmap
jako jednego słowa, choć jak na ironię nietree map
. wzruszenie ramionamihoneyBee
(a niehoneybee
, w rzeczywistości nie „pszczoły miodnej”, ale „pszczoły miodnej”), orazbutterfly
.setUp
Przypadek nieadresowany jest jednak przypadkiem na krawędzi, jest to pojedyncze słowo, aleJUnit
historycznie ma swoją nazwę inicjalizacji urządzeniasetUp
.JUnit
ma rację, reszta z nas ma przewagę. :)tearDown
: DCzęść 1
Myślę, że tym, co cię denerwuje, jest to, że niektóre z twoich przykładów są złożonymi słowami , podczas gdy inne nie.
Słowa złożone nie są zgodne z notacją wielbłąda dla drugiego słowa w słowie złożonym.
Tak jest
motorcycle
i niemotorCycle
.Ale „numer telefonu” nie jest słowem złożonym i byłby zgodny z notacją wielbłąda. tj
phoneNumber
.A to prowadzi do:
motorcycleColor
.Jeśli nie mogę sobie przypomnieć, czy słowo jest naprawdę słowem złożonym, czy nie, szukam go w słowniku, aby się upewnić.
Część 2
Dwa z twoich przykładów są trochę trudniejsze.
Są trudne, ponieważ niektórzy przeliterują je jako „skrót mapy” i „skrót tablicy”. Według słownika, który właśnie sprawdziłem, są to osobne słowa, a nie słowo złożone. Tak więc właściwym przypadkiem wielbłąda byłoby
hashMap
ihashTable
. Nie każda drużyna przestrzega tej konwencji, więc musisz zapytać członków drużyny, co wolą, a następnie trzymać się tego. Spójność jest w tym przypadku ważniejsza niż to, co może powiedzieć słownik.* Niektórzy spierają się o to, że niedziela jest słowem złożonym, ponieważ inne dni tygodnia nie są, ale dla celów tego pytania pominę ten problem. Najłatwiej jest traktować je jako słowo złożone, a zatem bez wielbłąda.
źródło
if (currentDay == thorsDay) {...
Hmm ... zbyt złe biblioteki dat nie mają tego jako opcji formatowania, gdy chcesz uzyskać pełną nazwę dnia tygodnia.HashMap hashMap = new HashMap();
Jak zauważyli inni, przy łączeniu słów używana jest obudowa wielbłąda. Nie używaj wielbłąda w jednym angielskim słowie. Problem polega na określeniu, które związki są pojedynczymi słowami. Programiści, pozostawieni sami sobie, podejmą różne decyzje w zależności od ich znajomości języka angielskiego. Prowadzi to do niespójności w pisowni wielkimi literami, które są prawie tak irytujące jak błędy ortograficzne.
Aby temu zapobiec, programiści powinni używać standardowego źródła (np. Dictionary.com ), gdy nie są pewni co do pisowni lub wielkich liter. Mimo to, jeśli konsekwencja w nazewnictwie jest ważna dla twojego projektu, nie ma substytutu dla przeglądu kodu.
Wybór jednego odwołania do projektu rozwiąże większość argumentów dotyczących wielkich liter i pisowni. Istnieje kilka związków, takich jak Hashtable, których nie ma w słownikach, ale są one pisane wielkimi literami w interfejsach API Java i C #. Będziesz chciał podjąć decyzję w sprawie całego projektu. W Javie jest to „HashMap”, ale „Hashtable”. „Tablica skrótów” IMO jest wyraźnie niepoprawna; nigdy nie pojawia się jako pojedyncze słowo, z wyjątkiem nazwy w interfejsie API.
źródło
Najprostszym sposobem na wykonanie wielbłąda jest określenie słowa.
Przykłady z twojego pytania:
Jeśli nie podzielisz go na dwa słowa, nie powinieneś również używać na nim futerału na wielbłądy. W przeciwnym razie używasz go na sylabach i jak głupio to wygląda
źródło
setup
, a jeśli masz funkcję do skonfigurowania czegoś, zostanie on wywołanysetUp
.wavelength
albo wwaveLength
zależności od tego, czy przedmiotowa wartość dotyczy prędkości propagacji podzielonej przez częstotliwość, czy też odnosi się do „długości” (niekoniecznie odległości) jakiegoś rodzaju fali . Na przykład zmienna biblioteki syntezy audio dla liczby próbek związanych z falą nie byłaby,wavelength
alewaveLength
.WaveLength
samo w sobie byłoby nieco niejasne w każdym, poza najbardziej uproszczonymi scenariuszami [czy odnosi się to do wielkości bufora lub długości odcinka zapętlonego], ale słowa te mogłyby doskonale występować pod dłuższą nazwą.To tutaj komplikacja ze zwykłym angielskim przeszkadza w późniejszym nadużyciu angielskiego w celu dopasowania do reguł białych znaków dla tokenów w kontekście programowania.
Z podanych przez ciebie słów prawie wszystkie są związkami. Niedziela nie jest, jakkolwiek powstała jako związek, tak dawno temu, że nie można jej obecnie uznać za taką, zwłaszcza że poświęcenie jej słońcu jest bardziej historyczną ciekawostką niż silną częścią religii i kultury perspektywy osób anglojęzycznych.
W języku angielskim trzy główne sposoby pisania związku są otwarte (ze spacją między dwoma słowami), dzielone i zamykane (bez spacji lub łącznika między nimi). I chociaż istnieją pewne zasady dotyczące dzielenia otwartych związków w określonych sytuacjach, tak naprawdę nie ma zbyt wielu zasad dotyczących ustalania, która forma jest używana dla danego związku, poza tym, że widzą to, co robią inni ludzie, i wciąż są chwile, kiedy „ll znaleźć dwa lub nawet wszystkie trzy formy ( eggbeater , eggbeater i jaj trzepak na przykład).
Tutaj numer telefonu jest prawie zawsze otwarty, więc należy go traktować jako dwa słowa.
A kiedy inter-capping w celu utworzenia tokena, spacja lub łącznik są usuwane, a drugie i kolejne słowo jest pisane tytułem tytułu, stąd
phoneNumber
lubPhoneNumber
zgodnie z konwencją.Rzeczą, która
phoneNumber
wydaje się dziwna, jest prawdopodobnie to, że częściej podaje się ją tak, jakphone
w większości kontekstów lubnumber
gdy kontekst dotyczy połączenia telefonicznego.źródło
Zapewnij spójność w pliku kodu.
Promuj spójność w projekcie kodu.
Preferuj spójność w bibliotece kodów.
Łączenie słów w celu przedstawienia pojęć zmienia się, gdy lepiej poznamy daną aglutynację .
Na przykład...
Zauważ, że moduł sprawdzania pisowni StackExchange nie może się zdecydować. „Numer telefonu” na końcu powyższego zdania był w porządku, ale oznacza ten na początku zdania (wielkie litery lub nie).
Tak jak większość pragnie, aby istniał „jeden właściwy sposób” robienia rzeczy, jeśli chodzi o język, to nigdy nie może być. Do czasu zakończenia projektu wykorzystanie prawdopodobnie ulegnie zmianie. Z pewnością zmieni się twoje zrozumienie i funkcjonalność metody / et.al. prawdopodobnie też się zmieni. (W takim przypadku prawdopodobnie należy odpowiednio zmienić nazwę).
źródło
Z czysto technicznego punktu widzenia (USA), gdzie xxx-rrrr-zzzz to coś, co normalnie byś myślał jako „numer telefonu”, część xxx jest właściwie określana jako numer kierunkowy, część yyy jest odpowiednio nazywana wymiany, a zzzz jest odpowiednio nazywany liczbą.
Ponieważ „numer telefonu” nie jest jeszcze słowem złożonym (jeszcze), ale jeśli się nim stanie, niepoprawnie będzie odwoływał się do czegoś poza intencją twórcy, powiedziałbym, że składnia camelCase wymagałaby numeru telefonu dla każdej zmiennej, która się do niego odwołuje, ale jeśli zrobisz cokolwiek z rzeczywistym systemem telefonicznym, użyłbym phoneExchangeNumber dla siedmiocyfrowej i phoneACExchangeNumber dla dziesięciocyfrowej wersji.
źródło