понедельник, 24 марта 2014 г.

JavaScript MVC - Правила написания кода

Контроллеры

- Контроллеры являются связующим звеном между видами и моделями. Поэтому сохраняйте котроллеры независимыми от типа передаваемых данных и внешним представлением информации.
- Большинство логики контроллеров отвечает за управление событиями, возникающими в процессе работы приложения.
- Не передавайте экземпляр контроллера всем остальным контроллерам. Любое взаимодействие между дочерними и родительскими контроллерами должно происходить посредством публикации и передачи событий.
- Контроллер должен знать только о существовании дочерних контроллеров.
- Контроллер должен быть ограничен одним элементов и не должен иметь доступа к получению данных из DOM и изменению или  изменению его частей.
- Контроллер должен иметь уникальное имя класса и весь код CSS, относящийся к этому контроллеру, должен быть заключен в пространство имен с именем этого класса.
- Контроллер должен работать без сбоев даже, если элемент, к которому он привязан не добавлен в дерево DOM.
- Контроллер должен работать при тестовых запусках относящихся к нему событий программным способом.
- Контроллер должен быть способен в любое время перерисовать элементы страницы без всяких побочных эффектов.
- Контроллер не должен использовать DOM для хранения в нем состояний. Для хранения состояния используйте свойства контроллера.

Виды

- Виды должны быть независимы от логики контроллеров за исключением управления потоком выполнения и вспомогательных функций.
- В виды должны передавать и быть доступными все данных необходимые для отрисовки страницы.

Модели

- Модели должны быть сконцентрированы только на управление и обработку данных.
- Модели никогда не должны иметь доступа к контроллерам и видам.
- Модели никогда не должны иметь доступа к DOM дереву.
- Модели должны быть абстрагированы от XHR соединений во всем приложении.
- Модели должны содержать в себе все операции по валидации данных.

Маршрутизаторы

- Маршрутизаторы не должны содержать в себе какой-либо логики и вычислений.
- Маршрутизаторы ничего не должны знать о существовании DOM дерева.

Глобальные переменные

- Глобальные переменные должны быть сведены к минимому. Желательно их не использовать совсем. Передачу информации между частями приложения можно осуществлять посредством передачи событий.

Модули

- Весь код в обязательном порядке должен быть разбит на независимые модули, согласно стандартам CommonJS, AMD, ES6.

Комментариев нет:

Отправить комментарий