Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Краткий пересказ утерянных глав руководства по ...

Avatar for CSSSR CSSSR
December 11, 2018

Краткий пересказ утерянных глав руководства по фронтенду

Артём Арутюнян рассказывает об общих ошибках в архитектуре приложений и базовых концепциях, которые влияют на скорость разработки и стоимость поддержки.

Полезные материалы: https://telegra.ph/Kratkij-pereskaz-uteryannyh-glav-rukovodstva-po-frontendu-Ssylki-12-29

Avatar for CSSSR

CSSSR

December 11, 2018

More Decks by CSSSR

Other Decks in Programming

Transcript

  1. ◦ @artalar ◦ CSSSR ◦ 5+ лет в ИТ ◦

    ~2 года делаю фронтенд ◦ ~15 веб-приложений ◦ пописываю блог, реактивный стейт-менеджер CSSSR @artalar Обо мне
  2. Сценарный язык (язык сценариев) — высокоуровневый язык сценариев — кратких

    описаний действий, выполняемых системой. Разница между программами и сценариями довольно размыта. Сценарий — это программа, имеющая дело с готовыми программными компонентами Википедия CSSSR @artalar Типизация
  3. JS — терминальный язык для удобного (и простого) манипулирования готовыми

    программными компонентами (API DOM) CSSSR @artalar Типизация
  4. Контрактное программирование function square(n) { if (typeof n !== ‘number’)

    { throw new TypeError() } return n * n } CSSSR @artalar Типизация
  5. Думайте о том, как вы будете в будущем поддерживать этот

    код ◦ архитектурно фундаментальна (первична); ◦ можно описывать без статической типизации: валидация, контрактное программирование; ◦ flow, TS, ReasonML, ClojureScript, Kotlin, Elm, Dart… CSSSR @artalar Типизация. Выводы
  6. Смысловой порядок CSSSR @artalar bigArray.filter(some => some === this.props.v) VS

    const { v } = this.props; bigArray.filter(some => some === v) Семантика
  7. Производительность? CSSSR @artalar bigArray.filter(some => some === this.props.v) VS const

    { v } = this.props; bigArray.filter(some => some === v) Семантика
  8. Proxy, get, set CSSSR @artalar bigArray.filter(some => some === this.props.v)

    VS const { v } = this.props; bigArray.filter(some => some === v) Семантика
  9. Думайте о том, как вы будете в будущем поддерживать этот

    код ◦ явное лучше неявного; ◦ группируйте смысловые блоки, бейте их на компоненты; ◦ следите за структурой проекта, модулей, файла; ◦ попробуйте не использовать JSX для контейнеров. CSSSR @artalar Семантика. Выводы
  10. Документация CSSSR @artalar Прикладные советы ◦ JSDoc; ◦ пишите тесты;

    ◦ средства дебага: react-devtools, redux-devtools, kuker, debugger в IDE.
  11. README.md CSSSR @artalar Прикладные советы ◦ общее описание бизнес-цели проекта;

    ◦ ссылки на основные ресурсы: ◦ git, jira (backlog, sprint, готовые фильтры под это); ◦ список сред (дев, стейдж, тест, прод) и прав доступа к ним; ◦ ссылки на контакты ключевых ответственных лиц в проекте: ◦ ПМ, техлид (бэк и фронт), тимлид (бэк и фронт), тестировщик, дизайнер, девопс, сетевик, сами разработчики; ◦ их почты, телефоны, чаты.
  12. CONTRIBUTING.md CSSSR @artalar Прикладные советы ◦ инструкция по настройке инфраструктуры,

    среды: ◦ требования к окружению (windows/linux, node version); ◦ общие правила и их выражения в конфигах линтеров: ◦ eslint, stylelint, commitlint, prettier; ◦ gitflow; ◦ правила ревью кода.
  13. LEGACY.md CSSSR @artalar Прикладные советы ◦ техдолг ◦ комментарии к

    тегам; ◦ легаси ◦ устаревшие библиотеки.
  14. CSSSR @artalar Ссылки на материалы ◦ Контрактное программирование: - Проектирование

    по контракту — краткое знакомство с контрактным программированием; - Flow: Контракты — короткое видео с примером на flow; - typed-contracts — библиотека для контрактного программирования с выводом типов (только flow). - mobx-state-tree — стейт менеджер с встроенной валидацией модели стейта при его изменении ◦ Структура проекта: - Atomic Design; - Feature Slices; - Subatomic Design Systems. ◦ Структура файла: - Структура React-компонента; ◦ Разработка, дебаг, рефакторинг: - Подсветка TODO и FIXME; - Kuker — расширение для лога событий и данных (показывает диф); - babel-macro — кодогенерация (полезно для декларативного программирования); - Соглашения по именованию коммитов. ◦ Документация: - Docusaurus; - GitBook.