Как правильно называть имена классов в Java?
Как правильно называть имена классов в Java? Есть у меня к примеру список классов. Удобнее читать так?
FragmentInternalCapitalization FragmentWordsRunTogether FragmentWordsStrungTogether FragmentCamelHumpedWord FragmentInternalCapitalization FragmentWordsRunTogether FragmentWordsStrungTogether FragmentCamelHumpedWord
Или все так так?
InternalCapitalizationFragment WordsRunTogetherFragment WordsStrungTogetherFragment CamelHumpedWordFragment InternalCapitalizationFragment WordsRunTogetherFragment WordsStrungTogetherFragment CamelHumpedWordFragment
Половина кода у меня так половина так)). Это чем то похоже на Strings str[] и Strings []str Конечно для коротких названий без разницы. А если названия будут из 3-5 слов. Только не пишите как хочешь). А то ведь если так то я и так могу называть классы OneTwoFragmentThreeFour =) Просто в iOS к примеру там все названия классов идут с переди. Типо NSString NSlalal .
Как называть классы в java
В разных языках программирования вы встретите разные стили наименования переменных, например: some_counter, $somecounter, SomeCounter, someCounter, mSomeCounter и так далее.
В языке Java с этим строго, всего несколько правил:
1) Все переменные и методы в Java всегда именуются только используя так называемую нижнююВерблюжьюНотацию или lowerCamelCase.
В этой нотации, когда переменная состоит из нескольких слов, то
а) все слова пишутся слитно,
б) первое слово пишется с маленькой буквы,
в) каждое следующее слово пишется с большой буквы.
Переменные никогда не должны начинаться со знака подчеркивания или знака доллара (хоть формально такую переменную и можно задекларировать).
int someCounter; double himmelDonnerWetter; Ship[] ourShips; char friendZone;
1a) Если в переменной встречается аббревиатура из трех или более букв – то используется CamelCase вместо верхнего регистра (например, вместо parseDBMXMLFromIPAddress нужно писать parseDbmXmlFromIPAddress ). Двухбуквенные аббревиатуры можно тоже писать используя CamelCase, если это повысит читабельность (например, parseDbmXmlFromIpAddress ).
2) Константы именуют только БОЛЬШИМИ_БУКВАМИ с использованием подчеркивания для связи слов.
static final int MAX_PARTICIPANTS = 10;
3) Все названия классов, интерфейсов и перечислений даются только с использованием ВерхнейВерблюжьейНотации или UpperCamelCase
В этой нотации, когда переменная состоит из нескольких слов, то
а) все слова пишутся слитно,
б) первое слово пишется с большой буквы,
в) каждое следующее слово пишется с большой буквы.
class SomeCounter < >class HimmelDonnerWetter < >class BigShip
Имейте ввиду, что неспособность следовать этим правилам может привести к путанице и ошибочному коду. Например, widget.expand() и Widget.expand() подразумевают существенно различное поведение: widget.expand() подразумевает вызов метода expand() в экземпляре с именем widget, тогда как Widget.expand() подразумевает вызов статического метода expand() в классе Widget.
4) Пакеты именуют только маленькими_буквами с использованием подчеркивания для связи слов.
package io.khasang.java.big_lesson;
Как придумывать осмысленные имена для классов?
Как давать осмысленные имена для классов? В моем словарном запасе есть только controller, manager, helper, receiver, adapter и еще пару.
Чувствую, что зачастую имена для классов не соответствуют их предназначению.
- Вопрос задан более трёх лет назад
- 3229 просмотров
1 комментарий
Оценить 1 комментарий
Правильные имена классов, функций и переменных — это половина успеха.
Решения вопроса 2

Тимур Шемсединов @MarcusAurelius
автор Impress Application Server для Node.js
Какое крутое признание, это действительно уникально что Вы понимаете, что в этом что-то не так. Большинство разработчиков что не сделают, все контроллером зовут. Я думаю, что нужно больше читать и развивать словарный запас, кругозор и сознание, даже не обязательно англоязычную литературу, научно-техническая лексика по большей части интернациональна. Читать можно конечно и статьи в научно-популярных журналах и художественную литературу, но мне ближе и я советую ученых, программистов и философов: Дональд Кнут, Гради Буч, Декарт, Кант, Марк Аврелий, Лао Цзы, Спиноза, Паскаль, Платон, Аристотель, Мамардашвили, Пятигорский, Шантидева, Рассел, Хомский, Норберт Винер, Глушков, Канторович, Лебедев, фон Берталанфи, Уильям Эшби, Дейкстра, извините, если кого не вспомнил, кто вот первый вдруг на ум пришел.
Наименование интерфейсов в Java
В мире объектно-ориентированного программирования часто встречается соглашение об именовании, согласно которому имена интерфейсов начинаются с заглавной буквы «I». Это соглашение широко применяется во многих языках программирования вроде C# или TypeScript и помогает разработчикам быстро определить, является ли данный тип интерфейсом или классом.
Однако в Java это соглашение не применяется. Вместо префикса «I» перед именем интерфейса, в Java обычно используют суффикс «Impl» после имени класса, который реализует интерфейс.
Возьмем для примера интерфейс «Пользователь» и его реализацию. В большинстве языков мы бы назвали их IUser (интерфейс) и User (класс). Но в Java мы имеем два варианта: UserInterface (интерфейс) и User (класс) или User (интерфейс) и UserImpl (класс).
Возникает вопрос: почему Java выбрала иной подход к именованию интерфейсов? И, что более важно, стоит ли следовать общепринятому соглашению об именовании интерфейсов, особенно учитывая текущие тенденции в разработке фреймворков на Java?
Во-первых, стоит отметить, что в Java нет строгих правил об именовании интерфейсов. Выбор между использованием суффикса «Impl» или префикса «I» остается за разработчиком.
Во-вторых, решение о том, как называть интерфейсы, зависит от многих факторов, включая стиль кодирования, предпочтения команды, используемые инструменты и фреймворки, и так далее.
Например, использование суффикса «Impl» может быть полезным в случае, когда ожидается, что у интерфейса будет только одна реализация. Это также может быть удобно при использовании контейнеров Inversion of Control (IoC), которые часто используют динамические прокси.
С другой стороны, префикс «I» может быть полезен в случае, когда есть вероятность появления нескольких реализаций одного и того же интерфейса.
В заключение, можно сказать, что нет единственно верного ответа на этот вопрос. Как всегда, важно знать возможные варианты и выбирать тот, который наиболее подходит для конкретной ситуации.