Практичное качество кода — в коммуникации и разработке

A presentation at WordPress Kyiv Meetup 2020–01 in January 2020 in Kyiv, Ukraine, 02000 by Andrey Savchenko

Slide 1

Slide 1

практичное качество кода в коммуникации и разработке

Slide 2

Slide 2

2 Андрей «Rarst» Савченко — Rarst.net — WordPress контрактор — современный PHP — производительность — качество кода

Slide 3

Slide 3

не такой доклад

Slide 4

Slide 4

4 “ Качество — степень в которой система свободна от дефектов, относительно сферы её функций.

Slide 5

Slide 5

5 Качественный код — аспекты — преимущества — проблемы — подходы

Slide 6

Slide 6

качественный код работает

Slide 7

Slide 7

7 Код который работает — говорит что делает — делает что говорит — говорит что не делает — не делает что не говорит

Slide 8

Slide 8

8 Цели кода 1. Сформулированы 2. Изложены 3. Выполнены

Slide 9

Slide 9

9 Само–документирующий код? — PHP и язык не взаимозаменяемы — документация интерфейс для мозга — код интерфейс для компьютера

Slide 10

Slide 10

качественный код читаемый

Slide 11

Slide 11

11 Порядок 1. Прочитать 2. Понять 3. Изменить

Slide 12

Slide 12

12 PSR–12 Стили кода для форматирования и привычности. WordPress Coding Standards Стандарты кода для правил и соглашений.

Slide 13

Slide 13

CS = индустрия − глупое

Slide 14

Slide 14

качественный код простой

Slide 15

Slide 15

15 Предположение Код это актив. Реальность Код это риск.

Slide 16

Slide 16

16 Цикломатическая сложность Число путей в коде, измеряет сложность тестирования. Когнитивная сложность Оценка сложности для человека, измеряет сложность понимания.

Slide 17

Slide 17

качественный код типобезопасен

Slide 18

Slide 18

18 История типов 1. PHP 5: класс/интерфейс, array , callable 2. PHPDoc: объединение, пересечение, скалярные… 3. PHP 7: скалярные, iterable , object 4. Psalm: сложные массивы, шаблоны 5. PHP 8: объединение

Slide 19

Slide 19

19 Современность Поддержка языком, статический анализ, высокое покрытие. Историческое Нет обработки исключений, небезопасные API.

Slide 20

Slide 20

качественный код с тестами

Slide 21

Slide 21

21 Навыки тестирования — делать хорошие тесты — не делать плохие тесты — делать тестируемый код — делать код тестируемым

Slide 22

Slide 22

22 Миф Тесты универсально хороши. Правда Плохие тесты могут быть хуже чем никаких.

Slide 23

Slide 23

23 Качество кода — составное — контекстное — согласуемое — вычислительное

Slide 24

Slide 24

24 Пример стека — PhpStorm (интегрированная среда разработки) — PHP Inspections EA Extended (анализ дефектов) — PHP_CodeSniffer, WordPress Coding Standards (стандарт кода) — PHPCS Cognitive Complexity (анализ сложности) — Psalm (анализ типов) — Scrutinizer (непрерывная интеграция, покрытие, анализ тестируемости) — PHPUnit (модульные тесты) — Brain Monkey (макеты ядра)

Slide 25

Slide 25

качество кода это мета процесс

Slide 26

Slide 26

26 Спасибо что выслушали! Вопросы? Rarst.net twitter.com/Rarst Rarst.net/slides/code-quality-ru