Качественный код? Миф!
DESCRIPTION
Многие программисты прилагают много усилий, чтобы писать с их точки зрения качественный код. Однако в силу проблемы индукции, понимание хорошего кода целиком зависит от конкретного опыта программиста. Как следствие, один и тот же код для одного человека может казаться вершиной качества, а для другого - говнокодом. Как только Вы перестали видеть проблемы в коде - это не значит, что код стал качественным, это всего лишь значит, что уровень проблем вышел за рамки Вашего понимания. Это презентация доклада с Омского ИТ-субботника. Ссылка на видео самого доклада http://www.youtube.com/watch?v=JzxJUrvoO1YTRANSCRIPT
![Page 1: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/1.jpg)
01 TIKTOKCOACH.RU
Качественный код? Миф!
![Page 2: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/2.jpg)
02 TIKTOKCOACH.RU
Докладчик
Тюменцев Евгений
Разработка кросс-платформенных приложений
Руководство отделом разработки ПО в 40 человек
Тех. директор ИТ-компании в 70 человек
Управляющий партнер стартапа “Тик-Так Коуч”
![Page 3: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/3.jpg)
03 TIKTOKCOACH.RU
Качественного кода не существует!
![Page 4: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/4.jpg)
04 TIKTOKCOACH.RU
Спасибо за внимание
![Page 5: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/5.jpg)
05 TIKTOKCOACH.RU
Определение качества ПО
ISO 9126
Качество ПО – совокупная характеристика ПО с учетом следующих составляющих: – Надежность
– Сопровождаемость
– Практичность
– Эффективность
– Мобильность
– Функциональность
![Page 6: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/6.jpg)
06 TIKTOKCOACH.RU
Определение качества ПО
Надежность – набор атрибутов, относящихся к способности ПО сохранять свой уровень качества функционирования в установленных условиях за определенный период времени
• Уровень завершенности (отсутствие ошибок)
• Устойчивость к дефектам
• Восстанавливаемость
• Доступность
• Готовность
![Page 7: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/7.jpg)
07 TIKTOKCOACH.RU
Определение качества ПО
Мобильность — набор атрибутов, относящихся к способности ПО быть перенесенным из одного окружения в другое
• Адаптируемость
• Простота установки
• Сосуществование
• Замещаемость
![Page 8: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/8.jpg)
08 TIKTOKCOACH.RU
Определение качества ПО
Сопровождаемость - набор атрибутов, относящихся к объему работ, требуемых для проведения конкретных изменений (модификаций)
• Удобство анализа
• Изменяемость
• Стабильность
• Тестируемость
![Page 9: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/9.jpg)
09 TIKTOKCOACH.RU
Определение качества ПО
Практичность (применимость) — набор атрибутов, относящихся к объему работ, требуемых для исполнения и индивидуальной оценки такого исполнения определенным или предполагаемым кругом пользователей
• Понятность
• Простота использования
• Изучаемость
• Привлекательность
![Page 10: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/10.jpg)
10 TIKTOKCOACH.RU
Определение качества ПО
Эффективность — набор атрибутов, относящихся к соотношению между уровнем качества функционирования ПО и объемом используемых ресурсов при установленных условиях
• Временная эффективность
• Используемость ресурсов
![Page 11: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/11.jpg)
11 TIKTOKCOACH.RU
Определение качества ПО
Функциональность — набор атрибутов характеризующий, соответствие функциональных возможностей ПО набору требуемой пользователем функциональности
• Пригодность к применению
• Корректность
• Способность к взаимодействию
• Защищенность
![Page 12: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/12.jpg)
12 TIKTOKCOACH.RU
Принципы мышления
Группировка Обобщение
![Page 13: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/13.jpg)
13 TIKTOKCOACH.RU
Абстракция
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов.
(Гради Буч)
![Page 14: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/14.jpg)
14 TIKTOKCOACH.RU
Примеры абстракций
Сфера применения
• Процедурное программирование
Абстракция
• Процедура
![Page 15: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/15.jpg)
15 TIKTOKCOACH.RU
Примеры абстракций
Сфера применения
• Процедурное программирование
• ООП
Абстракция
• Процедура
• Класс
![Page 16: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/16.jpg)
16 TIKTOKCOACH.RU
Примеры абстракций
Сфера применения
• Процедурное программирование
• ООП
• Предметная область
Абстракция
• Процедура
• Класс
• Абстракция сущности
![Page 17: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/17.jpg)
17 TIKTOKCOACH.RU
Примеры абстракций
Сфера применения
• Процедурное программирование
• ООП
• Предметная область
• Многопоточное программирование
Абстракция
• Процедура
• Класс
• Абстракция сущности
• Поток
![Page 18: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/18.jpg)
18 TIKTOKCOACH.RU
Защитный механизм
Абстракция – это то, что не позволяет нам сойти с ума и освоить большой объем информации
![Page 19: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/19.jpg)
19 TIKTOKCOACH.RU
Пираха – самые счастливые
3 гласных, 8 согласных Нет цифр Нет религии, ремесел, искусства Помнят только то, что помнит старейший живущий
![Page 20: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/20.jpg)
20 TIKTOKCOACH.RU
Проблема индукции
• Делаются выводы на основе конечного опыта
• Знания носят предельный характер
Курица Б. Рассела
![Page 21: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/21.jpg)
21 TIKTOKCOACH.RU
Искажение нарратива
Н. Талеб «Черный лебедь» Неспособность воспринимать факты без их интерпретации
![Page 22: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/22.jpg)
22 TIKTOKCOACH.RU
Ареал-специфичность
Использование тех или иных абстракций и связей между ними зависит от контекста
![Page 23: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/23.jpg)
23 TIKTOKCOACH.RU
Качественного кода не существует!
![Page 24: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/24.jpg)
24 TIKTOKCOACH.RU
Объяснение постфактум
Программирование – вещь иррациональная Качество кода придумали как рациональное объяснение иррационального
![Page 25: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/25.jpg)
25 TIKTOKCOACH.RU
Культурные традиции
![Page 26: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/26.jpg)
26 TIKTOKCOACH.RU
Группировка идей сверху вниз
Чтобы донести мысли до другого человека, нужно убедиться, что он группирует предметы так же как и Вы
![Page 27: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/27.jpg)
27 TIKTOKCOACH.RU
Мышление «снизу вверх»
Часто хардкод = не хочу разбираться в чужом коде
![Page 28: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/28.jpg)
28 TIKTOKCOACH.RU
Пример: список покупок
Мука
Молоко
Батарейки
Морковь
Апельсины
Хлеб
Масло
Яблоки
Ручка
Сок
Детская игрушка
Картофель
Детские тетради
Сметана
Сахар
Виноград
Вода
![Page 29: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/29.jpg)
29 TIKTOKCOACH.RU
Группировка
Батарейки Детские тетради Ручка Вода Сок Сахар Морковь Апельсины Яблоки Виноград Картофель
Масло
Хлеб
Молоко
Сметана
Мука
Детская игрушка
![Page 30: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/30.jpg)
30 TIKTOKCOACH.RU
Копи-паст непобедим!!!
Ассемблер –> if, for, switch
Алгоритмы -> процедуры
Процедуры -> классы
Собственный код -> библиотеки
Компьютер -> облако
![Page 31: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/31.jpg)
31 TIKTOKCOACH.RU
Почему?
Дублирование выходит за рамки применяемой платформы
![Page 32: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/32.jpg)
32 TIKTOKCOACH.RU
Почему?
Дублирование выходит за рамки применяемой платформы
Дублирование выходит за рамки понимания программиста
![Page 33: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/33.jpg)
33 TIKTOKCOACH.COM
Эффект Даннинга-Крюгера
![Page 34: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/34.jpg)
34 TIKTOKCOACH.RU
Дублировать или не дублировать?
Нижний
Скорость,
контроль,
доп. возможности
Верхний
гибкость,
продуктивность
![Page 35: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/35.jpg)
35 TIKTOKCOACH.RU
Говнокод как оценка своего опыта
Если Ваш код Вам кажется качественным, значит Вы еще не собрали все грабли
![Page 36: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/36.jpg)
36 TIKTOKCOACH.RU
Пример 1
![Page 37: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/37.jpg)
37 TIKTOKCOACH.RU
Пример 2
![Page 38: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/38.jpg)
38 TIKTOKCOACH.RU
Пример 3
![Page 39: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/39.jpg)
39 TIKTOKCOACH.COM
The Open-Closed Principle
Rob Martin (Uncle Bob)
![Page 40: Качественный код? Миф!](https://reader034.vdocuments.site/reader034/viewer/2022052622/559453ab1a28abc34f8b478d/html5/thumbnails/40.jpg)
40 TIKTOKCOACH.RU
Спасибо
Тюменцев Евгений
Звоните: +7 913 150 22 04
Пишите: [email protected]
Читайте: @tiktokcoach