Widziałem wiele kodów z deklaracją, na przykład Class clazz
, skąd się to bierze? Czy to jakaś konwencja? Myślę, że „clazz” nie jest nawet angielskim słowem, nie ma żadnego znaczenia, jak tak wielu programistów może przypadkowo nazwać błędną nazwę?
Widziałem wiele kodów z deklaracją, na przykład Class clazz
, skąd się to bierze? Czy to jakaś konwencja? Myślę, że „clazz” nie jest nawet angielskim słowem, nie ma żadnego znaczenia, jak tak wielu programistów może przypadkowo nazwać błędną nazwę?
Odpowiedzi:
clazz
jest używany w Javie zamiast zarezerwowanego słowa „klasa” od JDK 1.0. „Klasa” jest tym, czego chcesz, ale skracanie lub wstawianie śmieci („a”, „the”, „_” itp.) zmniejsza przejrzystość. clazz
po prostu mówi klasa. „Międzynarodowi” użytkownicy języka angielskiego (ci, którzy czytają zarówno brytyjski, jak i amerykański język angielski) są przyzwyczajeni do transpozycji „s” i „z”.
Ponieważ Java od samego początku ujawniła źródło i odpowiednią kulturę, wartościowy kod Java i samouczki mają te same konwencje. To jedna z największych zalet ekosystemu Java, która moim zdaniem była ważną częścią jego sukcesu.
Foo
zdefiniowane w zakresie klasy i foo
w zakresie lokalnej zmiennej powinny być legalne, ale wszystkie odniesienia do zmiennej klasy zakres, w zakresie lokalnego powinny wymagać this.Foo
. Taka zasada ...
someThing
w niektórych miejscach i sOmEtHiNg
w innych.
fnord
i pole wywoływane fnord
bez żadnych problemów, wielkich liter i bezsensownych słów. Myślę, że to wystarczy jako kontrprzykład.
Ponieważ nie mogą użyć słowa, którego chcą użyć, którym jest class
. To jest zarezerwowane.
Po prostu dlatego, że „class” jest zastrzeżonym słowem kluczowym, dlatego Class class
nie jest dozwolone. Dlatego zobaczysz Class clazz
lub Class cls
.
Class
ponieważ w danym projekcie jest tak wiele klas, że nazywanie klasy THE klasą wydaje się bezcelowe. Nie przychodzi mi też do class
ClassInformation
lub ClassMetadata
lub coś podobnego. Każda klasa jest klasą, ale nie nazywa się ich wszystkich Class
, tylko ich główną funkcją.
Sprowadza się do faktycznego kompilatora i jego zdolności do rozróżnienia, co oznacza token w swoim kontekście. Jednak w tym konkretnym przypadku to niezdolność kompilatora do rozróżnienia, co class
oznacza token w innym kontekście. Jest to twarda i szybka reguła, która class
niezależnie od kontekstu jest używana do oznaczenia deklaracji klasy i jako taka jest słowem zastrzeżonym . To jest tak proste i tak niskie, jak to tylko możliwe.
Jeśli czujesz się zmuszony, możesz napisać własny kompilator języka Java, aby zawierał regułę kontekstową, która pozwoli ci użyć class
jako nazwy zmiennej. Chociaż myślę, że dużo lepsze byłoby wykorzystanie twojego czasu po prostu clazz
lub klass
- prawdopodobnie byłoby to również dobre dla twojego zdrowia.
Java nie ma funkcji umożliwiającej użycie słowa kluczowego jako identyfikatora, w przeciwieństwie do C # z jego @
prefiksem (np. @class
Jest prawidłowym identyfikatorem).
class
i $class
oba są prawidłowymi (ale różnymi) identyfikatorami w JVM. Nie ma identyfikatora, który można zapisać w pliku źródłowym Java, który można przetłumaczyć "class"
na maszynie wirtualnej.
Deklaracja Class clazz
jest popularna w świecie Java, ale może być niewygodna dla nowicjuszy i osób sprawdzających pisownię. Słyszałem, jak niektórzy mówili, że należy tego unikać zgodnie z zasadą najmniejszego zdziwienia .
Ponieważ można powiedzieć, że Class
obiekt reprezentuje typ , ja osobiście wolę deklarować takie zmienne jak Class type
.
Mówiąc najprościej, class
ma klasę, której clazz
nie ma.