Android активность именования - PullRequest
19 голосов
/ 26 февраля 2011

Я все больше сталкиваюсь с конфликтами имен между действиями Android и другими классами.Мне было интересно, если бы вы могли сказать мне, как избежать этого.К сожалению, мои конкретные проблемы с именами не рассматриваются в связанных вопросах по SO.

Первый пример

У меня есть действие, отображающее уровень игры.Однако данные, необходимые для этого уровня (фоновые рисунки, объекты и т. Д.), Хранятся в отдельном классе.Естественно, я бы назвал последний класс Level.Однако я бы также назвал действие Level, потому что оно отображает уровни.

Второй пример

У меня есть действие, которое воспроизводит вырезанную сцену.Он в основном отображает несколько изображений подряд.Информация о том, какое изображение показано, как долго хранится в отдельном классе.Как и в предыдущем случае, я бы назвал оба класса CutScene.

Как бы вы решили эти проблемы с именами?Назовите виды деятельности LevelActivity и CutSceneActivity?Назовите классы представлений LevelModel и CutSceneModel?Что-то еще?

Ответы [ 2 ]

18 голосов
/ 26 февраля 2011

Я решаю эти проблемы с помощью префиксов или постфиксов классов с их «типом», как вы предложили в конце вашего вопроса:

  • LevelActivity, GameActivity, MainActivity,...
  • CommentsListAdapter, ...
  • CheckNewCommentsService, ...
  • и т. Д.

Но яобычно делают исключение для классов модели, которые являются объектами, которые содержат эти данные: я бы все же назвал свой класс модели уровня Level, а не LevelModel, чтобы указать, что я манипулирую и работаю с уровнем.


Другое решение (длиннее для ввода ^^) может заключаться в использовании полных имен (см. здесь ) при ссылкеваши классы:

  • com.something.yourapp.activity.Level
  • com.something.yourapp.model.Level

При этом вы всегда знаете, какой класс действительно используется.

2 голосов
/ 12 июля 2016

В общем, лучший способ назвать компоненты приложения для Android - добавить его "тип компонента" в качестве суффикса.Пример: -

  • LevelActivity (LevelActivity расширяет активность)
  • InboxUpdateService (InboxUpdateService расширяет службу)
  • ContactsContentProvider (ContactsContentProvide расширяет ContentProvider)
  • SMSBroadcastReceiver (SMSBroadcastReceiver расширяет BroadcastReceiver)

При использовании названного выше метода шансы на потерю трека будут минимальными, если вы работаете с большим потоком кода с большим количеством похожих имен в вашемapplication.

Итак, назовите ваши Деятельности суффиксом «Активность».

И назовите Класс, который предоставляет Данные для вашей LevelActivity, как Level.

В отличие от второй части ответа Паскаля МАРТИНА, вы также можете использовать LevelActivity и LevelInfo вместе.Потому что они предлагают четкую разницу, как указано ниже:

Различают имена таким образом, чтобы читатель знал, что предлагают различия - Роберт.К. Мартин, автор Чистый код

Но суффикс часто избыточен на когнитивной основе.Использование только слова Level ясно подчеркивает, что класс Level предоставляет информацию об уровне.Итак, используйте Level для класса, который предоставляет данные об уровне.

ПРИМЕЧАНИЕ. Если вы используете суффиксы, выберите одно слово для каждого понятия.Например: если вы используете суффикс Info для определения классов, предоставляющих информацию, то во всем приложении следует использовать только Info (не Data или Model), чтобы избежать путаницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...