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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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