Какое правильное имя для следующего класса Java:
DVDPlayer
или DVDPlayer
?
Соглашение о назначении Java с сокращениями
Ответ 1
Похоже, ответ заключается в том, что в Java нет единого стандарта для этого, и я хотел бы отметить, что в Руководстве по проектированию .NET Framework это указывается.
Теперь, прежде чем обвинить меня в том, что я не по теме, помните, что правила именования классов для Java и .NET Framework очень похожи, что делает рекомендации .NET полезными в качестве убедительного справочника.
Основные правила
Оба руководства рекомендуют использовать только аббревиатуры, если аббревиатура широко известна и понятна. DVD или XML являются отличными примерами этого, поскольку, хотя вы сразу их узнаете, распознанная расширенная версия займет немного больше времени.
Сокращения
Руководства .NET Framework рекомендуют не использовать аббревиатуры (в отличие от аббревиатур), за исключением того, что в идентификаторах могут использоваться две общие аббревиатуры: "ID" и "OK". При использовании аббревиатуры всегда используется Id
смешанного регистра, за исключением первого слова идентификатора camelCase (в отличие от идентификатора PascalCase).
В Java это соглашение соблюдается только иногда. Посмотрите, как смешаны варианты написания getID
и getId
в JCL. (Прокрутите часть страницы вниз по этой странице). В версии Java 8, однако, getId
используется все больше и больше, что указывает на то, что соглашение PascalCase является предпочтительным в настоящее время. Лучше всего избегать сокращений полностью, когда это возможно.
Краткие сокращения
В .NET Framework Guidelines говорится, что двухбуквенные аббревиатуры, такие как "IO", должны иметь одинаковый регистр для обеих букв. Поэтому для идентификаторов PascalCase (например, имени класса) вы получите DBRate
, а для идентификатора camelCase (например, локальной переменной) у вас может быть ioChannel
.
Это определенно кажется преобладающим соглашением и в Java.
Длинные Сокращения
В руководящих принципах .NET Framework для идентификаторов PascalCase и camelCase рекомендуются аббревиатуры, состоящие из трех букв или более, за исключением первого слова идентификатора camelCase. Таким образом, для имени класса у вас может быть XmlDocument
, а локальная переменная может быть названа httpRequest
.
Это соглашение не всегда соблюдается в Java. Четырехбуквенные аббревиатуры обычно используют смешанный регистр, но даже JCL не согласуется с трехбуквенными акронимами. Большинство из них, кажется, все в верхнем регистре, такие как "URL", "XML", "SQL" и "DOM", но есть некоторые исключения, такие как "Jar".
Заключение
Для Java:
Для сокращенных букв 4+ используйте смешанный регистр. Стандартная библиотека делает это, и это имеет смысл.
Для трехбуквенных аббревиатур вы можете использовать все прописные буквы, такие как JCL, или вы можете использовать смешанный регистр, как .NET Framework. В любом случае, будьте последовательны.
Для двухбуквенных сокращений используйте все заглавные буквы.
Для двухбуквенных сокращений в Java на самом деле нет стандарта, но я предлагаю использовать смешанный регистр, если только согласованность с другими именами не сделает все заглавные буквы лучше.
Ответ 2
Нет правильного ответа. Просто набор практик и соглашений, которые лучше играют с вашими другими инструментами.
Поэтому я предпочитаю DvdPlayer
. Это более полезно, так как в Eclipse вы можете сделать Ctrl + Shift + T и выбрать классы по первой букве каждого слова.
Ответ 3
Я видел, как оба они использовались в дикой природе, и кажется, что Sun подходит для стиля DVDPlayer
. Я предпочитаю DVDPlayer
, потому что таким образом становится ясно, где границы слова, даже если есть несколько последовательных сокращений, как в HTTPURLConnection
.
Ответ 4
Мне нравится определять отдельные экземпляры классов следующим образом:
Catalogue catalogue;
Person person;
Следовательно, если бы я использовал DVDPlayer
, что бы я назвал экземпляром этого? DVDPlayer
? Следовательно, я бы выбрал имя класса DVDPlayer
, поэтому вы можете назвать экземпляры типа DVDPlayer
.
Ответ 5
Некоторые примеры из классов JavaSE, apache commons и spring:
-
HttpURLConnection
-
HTTPAddress
-
UrlPathHelper
-
AopProxy
-
ISBNValidator
Итак - это не имеет большого значения.
Ответ 6
Эффективная Java, похоже, предпочитает DvdPlayer.
Ответ 7
Из sun java docs:
Имена классов должны быть существительными в смешанном случае с первой буквой каждого заглавного слова. Постарайтесь, чтобы ваши имена классов были простыми и описательными. Используйте целые слова - избегайте сокращений и сокращений (если аббревиатура гораздо более широко используется, чем длинная форма, такая как URL или HTML).
Ответ 8
Как указывали другие, это стиль, который отличается в разных проектах. Такие проекты Google, как Guava и GWT, предпочитают стиль DvdPlayer
.
https://google.github.io/styleguide/javaguide.html#s5.3-camel-case
Ответ 9
DVDPlayer
является стандартным, но DVDPlayer
не является редкостью.
Вы чаще всего видите getId
. Вероятно, из-за мышления идентификатор является сокращением "Идентичности". Это фактически инициалы документа Identity.
HttpURLConnection
часто приводится в качестве примера смешанного соглашения. Однако "http", используемый в качестве имени протокола в URL-адресе, должен быть строчным (хотя верхний регистр часто принимается).
Ответ 10
Здесь нет "правильных", только предпочтений.
Sun согласуется с тем, как они называют классы, содержащие "URL" и "HTML", но я вижу HTTP, используя как все кепки, так и случай верблюда в javadocs.
Лично я бы предпочел DvdPlayer.