Подтвердить что ты не робот

Именование игр в Android

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

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

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

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

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

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

4b9b3361

Ответ 1

Я решаю эти проблемы с помощью классов prefixing или postfixing с их "типом", как вы сказали в конце своего вопроса:

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

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


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

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

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

Ответ 2

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

  • LevelActivity (LevelActivity расширяет действие)
  • InboxUpdateService (InboxUpdateService расширяет сервис)
  • ContactsContentProvider (ContactsContentProvide расширяет ContentProvider)
  • SMSBroadcastReceiver (SMSBroadcastReceiver расширяет BroadcastReceiver)

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

Итак, назовите свои действия суффиксом "Активность".

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

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

Различать имена таким образом, чтобы читатель знал, что предложения о различиях Роберт. C. Мартин, автор Очистить код

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

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