Качество кода или инженерная культура

Содержание

Слайд 2

О себе Architect Больше 10 лет в коммерческой разработке Часто разработка SaaS с вебом и мобильными

О себе

Architect
Больше 10 лет в коммерческой разработке
Часто разработка SaaS с вебом и мобильными

Слайд 3

Что обсуждаем? Как писать качественный код программисту.

Что обсуждаем?

Как писать качественный код программисту.

Слайд 4

Вопросы лучше сразу

Вопросы лучше сразу

Слайд 5

Зачем? Гораздо удобнее работать с чужим качественным кодом Приятно качественно делать

Зачем?

Гораздо удобнее работать с чужим качественным кодом
Приятно качественно делать свою работу
За

это еще и платят
Слайд 6

Что не обсуждаем? Не обсуждается архитектурный уровень (почему тот или иной

Что не обсуждаем?

Не обсуждается архитектурный уровень (почему тот или иной фреймворк,

библиотека, БД и т.п.).
Не рассматриваются организационные аспекты (процесс разработки и т.п.).
Слайд 7

Технология написания кода Практики индустрии (XP, …) Практики языка Практики платформы

Технология написания кода

Практики индустрии (XP, …)
Практики языка
Практики платформы

На них программисты и

так обращают пристальное внимание, поэтому сегодня не о них.
Слайд 8

Что такое качественный код?

Что такое качественный код?

Слайд 9

Акт №1 Строчка кода

Акт №1 Строчка кода

Слайд 10

Любая строчка кода стоит денег на написание, тестирование, документирование и продажу.

Любая строчка кода стоит денег на написание, тестирование, документирование и продажу.

И

еще больших денег на поддержку.
Слайд 11

Через годы накапливаются сотни тысяч сомнительных строк кода Поэтому код обязательно

Через годы накапливаются сотни тысяч сомнительных строк кода
Поэтому код обязательно обосновывается

фичей
Должен обязательно использоваться
Излишние абстракции (интерфейс с одной реализацией)
Замедляет сборку, тесты, чтение кода и т.п.
Слайд 12

Акт №2 Я знаю лучше продуктолога.

Акт №2

Я знаю лучше продуктолога.

Слайд 13

Донеси свою мысль Иди в продуктологи Продуктолог разрешает кучу конфликтов между

Донеси свою мысль
Иди в продуктологи
Продуктолог разрешает кучу конфликтов между заинтересованными сторонами,

ты не видишь всей картины. Не нужно ему мешать работать.
Слайд 14

Акт №3 Но ведь есть примеры, когда я оказался прав...

Акт №3

Но ведь есть примеры, когда я оказался прав...

Слайд 15

На самом деле их нет. Вы инвестировали кучу денег в ненужный

На самом деле их нет.
Вы инвестировали кучу денег в ненужный код

сначала, а уже потом когда-нибудь что-то из этого могло потребоваться.
Это вредительство, т.к. компании тогда не нужно было это, а ресурсы были потрачены, постоянно тратятся деньги на невостребованные фичи.
Слайд 16

Акт №4 Наслаждение сложность или «интересные» проекты

Акт №4

Наслаждение сложность или «интересные» проекты

Слайд 17

Это приводит к невозможности решить сложную задачу. Т.к. в начале, когда

Это приводит к невозможности решить сложную задачу.
Т.к. в начале, когда все

еще было достаточно просто, проект невероятно переусложнили.
Мир и так весьма сложен, достаточно скоро сложность проекта поднимется благодаря объективным вещам (требованиям заказчиков).
Слайд 18

Простота

Простота

Слайд 19

Простой код ≠ Легкий код

Простой код ≠ Легкий код

Слайд 20

Легкий код

Легкий код

Слайд 21

Это все?

Это все?

Слайд 22

Стандарты команды, компании, языка и платформы

Стандарты

команды, компании, языка и платформы

Слайд 23

Проверки Вручную, автотесты, анализаторы кода

Проверки

Вручную, автотесты, анализаторы кода

Слайд 24

Документация Классов и структур данных, как собрать проект, неочевидных моментов и бизнес-логики

Документация

Классов и структур данных, как собрать проект, неочевидных моментов и бизнес-логики

Слайд 25

По стандартам простейший задокументированный проверенный код, решающий задачу

По стандартам простейший задокументированный проверенный код, решающий задачу

Слайд 26

Чек-лист Соответствует ли код принятым стандартам? Все ли понятно в описании

Чек-лист

Соответствует ли код принятым стандартам?
Все ли понятно в описании задачи и

соответствует ли код задаче? Лучше переспросить
Можно ли что-то удалить при сохранении первых двух пунктов? Удаляем
Протестирован ли код (вручную и автоматически)?
Пройдены ли проверки различными утилами (SonarQube, JaCoCo, IDEA)?
Слайд 27

Tools SonarQube / Sonar runner JaCoCo IDEA green policy

Tools

SonarQube / Sonar runner
JaCoCo
IDEA green policy

Слайд 28

Все же почему инженерная культура? Мы уже не художники и не

Все же почему инженерная культура?

Мы уже не художники и не ученые.
Наработаны

огромные практики как разрабатывать и как не разрабатывать код. Их нужно планомерно применять.
Слайд 29

Спасибо за внимание! Вопросы? igor@stepin.name, @stepin презентация: http://tinyurl.com/stepin-cq

Спасибо за внимание! Вопросы?

igor@stepin.name, @stepin презентация: http://tinyurl.com/stepin-cq