Skip to content

Code Guidelines

Viktor Likhanov edited this page Nov 26, 2018 · 4 revisions

В основном код должен в плане оформления должен следовать:

Структура папок в проекте

В корневом разделе проекта лежат основные папки:

  1. di - тут все, что связано с Dagger 2
  2. ui - тут все экраны, и связанные с ними Presenters, Interactors, etc
  3. utils - тут служебные и переиспользуемые компоненты, типа Extension-функций, методов логгирования, получения из SharedPreferences и пр.
  4. Application - класс, расширяющий android.app.Application

Рассмотрим более детально подпапки:

  • di: components, modules, scopes, services - тут комментарии излишни, все папки соответствуют компонентам для работы Dagger 2
  • ui: папки с экранами. Структура папок с экранами: activities, adapters, fragments, interactors, interfaces, models, presenters, repositories, views

Отдельно стоит напомнить (он есть в доках выше) про порядок следования элементов класса:

Java

  1. статические переменные: public, protected, private
  2. переменные класса: public, protected, private
  3. конструкторы
  4. override-методы
  5. методы класса: группировка по области видимости и по удобству чтения
  6. внутренние классы
  7. внутренние интерфейсы

Kotlin

  1. свойства класса (properties)
  2. блок инициализации
  3. второстепенные конструкторы
  4. методы класса
  5. companion-object

Разметка

Порядок следования атрибутов в XML-разметке:

  1. xmlns
  2. android
  3. style
  4. tools, app, other

В порядке следования android-атрибутов следует придерживаться правил:

  • id всегда первый
  • width, height - далее
  • потом следуют все остальные

Правила нейминга id-атрибутов рассмотрим на следующем примере:

Есть view с идентификатором tv_categories_title_text, находящаяся на экране CategoriesActivity, которая выступает заголовком категорий. Для названия используется snake_case. Состав идентификатора:

tv - тип view, идентификатор которого мы указываем. Используется аббревиатура из первых букв (TextView)

categories - хост-view, на котором находится view

title_text - описание view, и/или его роль на экране

Данное подробное описание служит для того, чтобы в момент обращения к идентификатору view было минимум коллизий названий, позволяющих быстро найти нужную view

Clone this wiki locally