Nienawidzę skrótów. DigitalVersatileDiscPlayerjest droga naprzód.
Tom Hawtin - tackline
7
+1 Tomowi za żart. Uważam to pytanie za pomocne, jeśli „poprawne” jest interpretowane jako „standardowe” lub „najbardziej typowe”. Przyjęta odpowiedź jest świetna!
Jon Coombs
6
Dla mnie sensowne jest myślenie o takich akronimach jak o jednym słowie i jako takie przestrzegam konwencji i używam ich DvdPlayer.
Daniel
7
Przewodnik po stylu ma o tym do powiedzenia: „Sformatuj skrót jako słowo, jeśli jest ono częścią dłuższej nazwy klasy”. , tak DvdPlayerjest droga. (I, dla Toma, „Używaj całych słów i unikaj używania skrótów, chyba że skrót jest częściej używany niż długa forma”. Myślę, że „DVD” jest częściej używane niż „Digital Versatile Disc” :-)
aioobe
Z pewnością miałeś na myśli „Discus”, prawda? :)
Ville Oikarinen
Odpowiedzi:
237
Ponieważ wygląda na to, że odpowiedź jest taka, że nie ma jednego standardu dla tego w Javie, chciałbym zauważyć, że Wytyczne Projektowe .NET Framework to określają.
Teraz, zanim zwalił mnie na bycie poza tematem, pamiętaj, że wytyczne dotyczące nazewnictwa klas dla Java i .NET Framework są dość podobne, co sprawia, że wytyczne .NET są przydatne jako przekonujące odniesienie.
Główne zasady
Obie wytyczne zalecają stosowanie akronimów tylko wtedy, gdy akronim jest powszechnie znany i dobrze rozumiany. DVD lub XML to doskonałe przykłady, ponieważ chociaż rozpoznasz je natychmiast, rozpoznanie rozszerzonej wersji zajęłoby trochę więcej czasu.
Skróty
Wytyczne .NET Framework zalecają, aby nie używać skrótów (w przeciwieństwie do akronimów), z tym wyjątkiem, że w identyfikatorach można stosować dwa popularne skróty „ID” i „OK”. Podczas korzystania ze skrótu Idzawsze używana jest wielkość liter, z wyjątkiem pierwszego słowa identyfikatora camelCase (w przeciwieństwie do identyfikatora PascalCase).
W Javie ta konwencja jest przestrzegana tylko przez pewien czas. Zobacz, jak mieszane są pisownia getIDi getIdsą w JCL. (Przewiń częściowo w dół tej strony). W wersji Java 8 chociaż, getIdstosowany jest coraz więcej, co wskazówki konwencja PascalCase jest korzystne w dzisiejszych czasach. Najlepiej, jeśli to możliwe, po prostu całkowicie unikać skrótów.
Krótkie akronimy
Wytyczne .NET Framework mówią, że dwa akronimy literowe, takie jak „IO”, powinny mieć taki sam przypadek dla obu liter. Tak więc dla identyfikatorów PascalCase (takich jak nazwa klasy) można uzyskać DBRate, podczas gdy dla identyfikatora camelCase (np. Zmiennej lokalnej) możesz miećioChannel .
Zdecydowanie wydaje się to być dominującą konwencją również w Javie.
Długie akronimy
Wytyczne .NET Framework zalecają, aby w akronimach trzyliterowych lub dłuższych używać identyfikatorów mieszanych dla identyfikatorów PascalCase i camelCase, z wyjątkiem pierwszego słowa identyfikatora camelCase. Zatem dla nazwy klasy możesz mieć XmlDocument, podczas gdy zmienna lokalna może być nazwana httpRequest.
Ta konwencja nie zawsze jest przestrzegana w Javie. Wydaje się, że cztery akronimy znaków zwykle używają mieszanych liter, ale nawet JCL nie jest spójny w przypadku akronimów trzyliterowych. Większość z nich wygląda na wielkie litery, na przykład „URL”, „XML”, „SQL” i „DOM”, ale są pewne wyjątki, takie jak „Jar”.
Wniosek
W przypadku Java:
W przypadku akronimów o wielkości 4+ liter używaj mieszanych liter. Standardowa biblioteka to robi i ma to po prostu sens.
W przypadku 3-literowych akronimów możesz używać wszystkich wielkich liter, takich jak JCL, lub możesz używać mieszanych liter, jak robi to .NET Framework. Tak czy inaczej, bądź konsekwentny.
W przypadku 2-literowych akronimów należy używać wielkich liter.
W przypadku dwuliterowych skrótów Java nie ma tak naprawdę standardu, ale sugeruję stosowanie małych i wielkich liter, chyba że spójność z innymi nazwami poprawiłaby wygląd wszystkich wielkich liter.
Podoba mi się to, z tym wyjątkiem, że stosowanie CAPS dla akronimów 3- i 2-literowych nie jest spójne. (Może jestem zbyt purystą, ale widzę przyjętą odpowiedź ze względów praktycznych. Plus, istnieje czynnik zamieszania.)
Jon Coombs
1
@JCoombs: Cóż, niespójność dwóch liter dotyczy czegoś, IpAddressco dla wielu ludzi wygląda okropnie. Osobiście, gdy muszę napisać kod Java, wybieram mieszaną wielkość liter dla 3-literowych akronimów, pozostawiając tylko dwie litery jako wyjątkowy przypadek.
Kevin Cathcart,
5
Co się stanie, jeśli nazwa twojej klasy ma wiele sąsiadujących dwuliterowych akronimów? Niezależnie od tego, co zrobisz, będzie wyglądać „źle” - USGFCharset, UsGfCharset, US_GFCharset ...
Kevin
3
Naprawdę dobra odpowiedź. Ale osobiście nie podoba mi się pomysł nazewnictwa .NET, który nazywa się inaczej w zależności od długości akronimów i od tego, czy jest to skrót. Kogo to obchodzi i sprawdza długość akronimu? A może to skrót? Wolę ogólną regułę nazewnictwa. Problem pojawia się, gdy używasz bibliotek stron trzecich o różnych konwencjach, niezależnie od reguły, którą wybierzesz.
Amani Kilumanga,
98
Nie ma „poprawnej” odpowiedzi. Tylko zestaw praktyk i konwencji, które pozwalają lepiej bawić się innymi narzędziami.
Dlatego wolę DvdPlayer. Jest to bardziej pomocne, ponieważ w Eclipse możesz wykonywać Ctrl+ Shift+ Ti wybierać klasy według pierwszej litery każdego słowa.
oooo to przydatna wskazówka dotycząca zaćmienia. Dzięki!
Peter Perháč
1
(+1) dobra wskazówka. która odpowiada na pytanie :-)
Asaf
2
Wystarczy „SIO”, aby znaleźć tę klasę.
finnw
7
Działa to również w innym miejscu w Eclipse - na przykład automatyczne uzupełnianie. Czy metoda / zmienna o nazwie „myDvdCoverImage”? - wystarczy wpisać mDCI Ctrl + Spacja
teabot
3
istnieją również ustawione wcześniej skróty, takie jak sysout Ctrl + Spacja, daje System.out.println. to samo dotyczy (spróbuj) i (dla)
medopal
50
Widziałem oba używane na wolności, a Sun wydaje się pasować do tego DVDPlayerstylu. Wolę DvdPlayerjednak, ponieważ w ten sposób jest jasne, gdzie są granice słów, nawet jeśli istnieje wiele kolejnych akronimów, jak w HTTPURLConnection.
Myślę, że „DVDPlayer” sprawia, że granice słów są wyraźniejsze. „Dvd” nie jest słowem, podczas gdy „DVD” to akronim od słów „Digital Versatile Disc”. Tak więc rzeczywiste granice słów w „odtwarzaczu DVD” znajdują się w „D”, „V”, „D” i „P”.
Greg Brown,
19
@GregBrown: DVD to dysk z dziurą, nikt poza tobą nie zna jego pełnej nazwy, nie obchodzi go to. I o wiele bardziej praktyczne jest użycie DvdPlayer.
Igor Rodriguez
4
@GregBrown: W rzeczywistości jest to bardziej praktyczne przynajmniej w Eclipse, gdzie rozpoznawanie wielbłądów jest uciążliwe z akronimami: tj. W DvdPlayer możesz wpisać „DP” i nacisnąć Ctrl + 1, aby wybrać opcję wyboru DvdPlayer, ale jeśli miałeś DVDPlayer, musisz wpisać „DVDP”. I jest jeszcze bardziej denerwujący, jeśli jest dłuższy. Nie chciałbym mieć UNESCOConnector w moim kodzie. W każdym razie jest to kwestia wyboru.
Igor Rodriguez
22
Innym dobrym przykładem jest HTTPSID - czy miałem na myśli SID HTTP lub HTTPS ID ... Dlatego powinien być napisany odpowiednio HttpSid lub HttpsId, aby lepiej wyjaśnić znaczenie.
Oz Edri,
37
Lubię definiować poszczególne wystąpienia klas w następujący sposób:
Catalogue catalogue;Person person;
Dlatego gdybym używał DVDPlayer, jak nazwałbym to wystąpienie? dVDPlayer? Dlatego wybrałbym DvdPlayernazwę klasy, abyś mógł nazwać instancje jak dvdPlayer.
@DerFlatulator Co z tym nie tak? Bez względu na to, jak przybyłeś dvdPlayer, kiedy wrócisz, dostaniesz DvdPlayer.
maaartinus,
5
@DerFlatulator: jest to kwestia automatyzacji podczas konwersji z UpperCamelCase na lowerCamelCase: Miałem problem podczas automatyzacji Hibernacji mapowania do przypadku snake_case: DvdPlayer -> dvd_playerale DVDPlayer -> d_v_d_player. Nie ma możliwości zautomatyzowania DVDPlayer do dvd_player.
pdem
3
@DerFlatulator: ok, dziękuję za odpowiedź, zadziałało w tym przypadku. Ale nadal jestem przekonany, że notacja „DvdPlayer”: co z DVDRPGPlayer ?, powinna zostać przekonwertowana na dvdRpgPlayer, a nie dvdrpgPlayer.
pdem
2
Weź również pod uwagę swoje programy pobierające i ustawiające: getDvdPlayer()działa lepiej niż getDVDPlayer(), na przykład, gdy jest używany z JSP EL (np foo.dvdPlayer.). A jeśli nazywasz gettery małymi literami w akronimach, najlepiej jest zachować te same nazwy klas, aby zachować spójność i przewidywalność.
daiscog
33
Kilka przykładów z klas JavaSE, apache commons i spring:
Nie powiedziałbym, że to nie ma znaczenia, chociaż nie jest to nic wielkiego. Niektórzy użytkownicy uważają, że ogólnie preferowane standardy są bardzo pomocne, nawet jeśli nie wszyscy konsekwentnie je przestrzegają.
Nazwy klas powinny być rzeczownikami, pisane wielkimi literami, z pierwszą literą każdego wewnętrznego słowa pisanego wielkimi literami. Staraj się, aby nazwy klas były proste i opisowe. Używaj całych słów, unikaj akronimów i skrótów (chyba że skrót jest znacznie szerszy niż długa forma, taka jak URL lub HTML).
To tak naprawdę nie mówi nic o tym, czy powinna to być górna czy wielbłądowa obudowa.
DD.
@DD. Myślę, że „znacznie częściej używane” punkty
oznaczają użycie wielkich liter
3
DVDPlayerjest standardem, ale DvdPlayernie jest rzadkością.
Częściej niż nie widzisz getId. Prawdopodobnie wynika to z myślenia, że ID to skrót od „Tożsamości”. To właściwie inicjały dokumentu tożsamości.
HttpURLConnectionjest często podawany jako przykład konwencji mieszanej. Jednak „http” używany jako nazwa protokołu w adresie URL powinien być pisany małymi literami (chociaż często są akceptowane duże litery).
Jestem prawie pewien, że większość ludzi używa ID jako skrótu Identyfikatora ... tzn. W bazie danych identyfikator tabeli odnosi się do identyfikatora tabeli do dokumentu tożsamości.
DD.
9
DVDPlayer zdecydowanie nie jest standardem; nawet JDK jest bardzo niespójne w swoim podejściu do tego.
Kevin Bourrillion
0
Nie ma „poprawnych”, tutaj są tylko preferencje.
Sun jest spójny w sposobie, w jaki nazywają klasy zawierające „URL” i „HTML”, ale widzę HTTP używający zarówno wszystkich wielkich liter, jak i wielbłąda w javadocs.
DigitalVersatileDiscPlayer
jest droga naprzód.DvdPlayer
.DvdPlayer
jest droga. (I, dla Toma, „Używaj całych słów i unikaj używania skrótów, chyba że skrót jest częściej używany niż długa forma”. Myślę, że „DVD” jest częściej używane niż „Digital Versatile Disc” :-)Odpowiedzi:
Ponieważ wygląda na to, że odpowiedź jest taka, że nie ma jednego standardu dla tego w Javie, chciałbym zauważyć, że Wytyczne Projektowe .NET Framework to określają.
Teraz, zanim zwalił mnie na bycie poza tematem, pamiętaj, że wytyczne dotyczące nazewnictwa klas dla Java i .NET Framework są dość podobne, co sprawia, że wytyczne .NET są przydatne jako przekonujące odniesienie.
Główne zasady
Obie wytyczne zalecają stosowanie akronimów tylko wtedy, gdy akronim jest powszechnie znany i dobrze rozumiany. DVD lub XML to doskonałe przykłady, ponieważ chociaż rozpoznasz je natychmiast, rozpoznanie rozszerzonej wersji zajęłoby trochę więcej czasu.
Skróty
Wytyczne .NET Framework zalecają, aby nie używać skrótów (w przeciwieństwie do akronimów), z tym wyjątkiem, że w identyfikatorach można stosować dwa popularne skróty „ID” i „OK”. Podczas korzystania ze skrótu
Id
zawsze używana jest wielkość liter, z wyjątkiem pierwszego słowa identyfikatora camelCase (w przeciwieństwie do identyfikatora PascalCase).W Javie ta konwencja jest przestrzegana tylko przez pewien czas. Zobacz, jak mieszane są pisownia
getID
igetId
są w JCL. (Przewiń częściowo w dół tej strony). W wersji Java 8 chociaż,getId
stosowany jest coraz więcej, co wskazówki konwencja PascalCase jest korzystne w dzisiejszych czasach. Najlepiej, jeśli to możliwe, po prostu całkowicie unikać skrótów.Krótkie akronimy
Wytyczne .NET Framework mówią, że dwa akronimy literowe, takie jak „IO”, powinny mieć taki sam przypadek dla obu liter. Tak więc dla identyfikatorów PascalCase (takich jak nazwa klasy) można uzyskać
DBRate
, podczas gdy dla identyfikatora camelCase (np. Zmiennej lokalnej) możesz miećioChannel
.Zdecydowanie wydaje się to być dominującą konwencją również w Javie.
Długie akronimy
Wytyczne .NET Framework zalecają, aby w akronimach trzyliterowych lub dłuższych używać identyfikatorów mieszanych dla identyfikatorów PascalCase i camelCase, z wyjątkiem pierwszego słowa identyfikatora camelCase. Zatem dla nazwy klasy możesz mieć
XmlDocument
, podczas gdy zmienna lokalna może być nazwanahttpRequest
.Ta konwencja nie zawsze jest przestrzegana w Javie. Wydaje się, że cztery akronimy znaków zwykle używają mieszanych liter, ale nawet JCL nie jest spójny w przypadku akronimów trzyliterowych. Większość z nich wygląda na wielkie litery, na przykład „URL”, „XML”, „SQL” i „DOM”, ale są pewne wyjątki, takie jak „Jar”.
Wniosek
W przypadku Java:
W przypadku akronimów o wielkości 4+ liter używaj mieszanych liter. Standardowa biblioteka to robi i ma to po prostu sens.
W przypadku 3-literowych akronimów możesz używać wszystkich wielkich liter, takich jak JCL, lub możesz używać mieszanych liter, jak robi to .NET Framework. Tak czy inaczej, bądź konsekwentny.
W przypadku 2-literowych akronimów należy używać wielkich liter.
W przypadku dwuliterowych skrótów Java nie ma tak naprawdę standardu, ale sugeruję stosowanie małych i wielkich liter, chyba że spójność z innymi nazwami poprawiłaby wygląd wszystkich wielkich liter.
źródło
IpAddress
co dla wielu ludzi wygląda okropnie. Osobiście, gdy muszę napisać kod Java, wybieram mieszaną wielkość liter dla 3-literowych akronimów, pozostawiając tylko dwie litery jako wyjątkowy przypadek.Nie ma „poprawnej” odpowiedzi. Tylko zestaw praktyk i konwencji, które pozwalają lepiej bawić się innymi narzędziami.
Dlatego wolę
DvdPlayer
. Jest to bardziej pomocne, ponieważ w Eclipse możesz wykonywać Ctrl+ Shift+ Ti wybierać klasy według pierwszej litery każdego słowa.źródło
Widziałem oba używane na wolności, a Sun wydaje się pasować do tego
DVDPlayer
stylu. WolęDvdPlayer
jednak, ponieważ w ten sposób jest jasne, gdzie są granice słów, nawet jeśli istnieje wiele kolejnych akronimów, jak wHTTPURLConnection
.źródło
Lubię definiować poszczególne wystąpienia klas w następujący sposób:
Dlatego gdybym używał
DVDPlayer
, jak nazwałbym to wystąpienie?dVDPlayer
? Dlatego wybrałbymDvdPlayer
nazwę klasy, abyś mógł nazwać instancje jakdvdPlayer
.źródło
DVDPlayer dvdPlayer;
?dvdPlayer
, kiedy wrócisz, dostanieszDvdPlayer
.DvdPlayer -> dvd_player
aleDVDPlayer -> d_v_d_player
. Nie ma możliwości zautomatyzowania DVDPlayer do dvd_player.getDvdPlayer()
działa lepiej niżgetDVDPlayer()
, na przykład, gdy jest używany z JSP EL (npfoo.dvdPlayer
.). A jeśli nazywasz gettery małymi literami w akronimach, najlepiej jest zachować te same nazwy klas, aby zachować spójność i przewidywalność.Kilka przykładów z klas JavaSE, apache commons i spring:
HttpURLConnection
HTTPAddress
UrlPathHelper
AopProxy
ISBNValidator
Więc - to nie ma znaczenia.
źródło
SRS
sięSoftwareRequirementSpecification
?Wydaje się, że skuteczna Java woli DvdPlayer.
źródło
Jak wskazali inni, jest to styl, który różni się w zależności od projektu. Projekty Google, takie jak Guava i GWT, preferują
DvdPlayer
styl.https://google.github.io/styleguide/javaguide.html#s5.3-camel-case
źródło
DvdPlayer
stylu: google-styleguide.googlecode.com/svn/trunk/…Z dokumentacji Sun Java :
źródło
DVDPlayer
jest standardem, aleDvdPlayer
nie jest rzadkością.Częściej niż nie widzisz
getId
. Prawdopodobnie wynika to z myślenia, że ID to skrót od „Tożsamości”. To właściwie inicjały dokumentu tożsamości.HttpURLConnection
jest często podawany jako przykład konwencji mieszanej. Jednak „http” używany jako nazwa protokołu w adresie URL powinien być pisany małymi literami (chociaż często są akceptowane duże litery).źródło
Nie ma „poprawnych”, tutaj są tylko preferencje.
Sun jest spójny w sposobie, w jaki nazywają klasy zawierające „URL” i „HTML”, ale widzę HTTP używający zarówno wszystkich wielkich liter, jak i wielbłąda w javadocs.
Osobiście wolałbym DvdPlayer.
źródło