40
01 TIKTOKCOACH.RU Качественный код? Миф!

Качественный код? Миф!

Embed Size (px)

DESCRIPTION

Многие программисты прилагают много усилий, чтобы писать с их точки зрения качественный код. Однако в силу проблемы индукции, понимание хорошего кода целиком зависит от конкретного опыта программиста. Как следствие, один и тот же код для одного человека может казаться вершиной качества, а для другого - говнокодом. Как только Вы перестали видеть проблемы в коде - это не значит, что код стал качественным, это всего лишь значит, что уровень проблем вышел за рамки Вашего понимания. Это презентация доклада с Омского ИТ-субботника. Ссылка на видео самого доклада http://www.youtube.com/watch?v=JzxJUrvoO1Y

Citation preview

Page 1: Качественный код? Миф!

01 TIKTOKCOACH.RU

Качественный код? Миф!

Page 2: Качественный код? Миф!

02 TIKTOKCOACH.RU

Докладчик

Тюменцев Евгений

Разработка кросс-платформенных приложений

Руководство отделом разработки ПО в 40 человек

Тех. директор ИТ-компании в 70 человек

Управляющий партнер стартапа “Тик-Так Коуч”

Page 3: Качественный код? Миф!

03 TIKTOKCOACH.RU

Качественного кода не существует!

Page 4: Качественный код? Миф!

04 TIKTOKCOACH.RU

Спасибо за внимание

Page 5: Качественный код? Миф!

05 TIKTOKCOACH.RU

Определение качества ПО

ISO 9126

Качество ПО – совокупная характеристика ПО с учетом следующих составляющих: – Надежность

– Сопровождаемость

– Практичность

– Эффективность

– Мобильность

– Функциональность

Page 6: Качественный код? Миф!

06 TIKTOKCOACH.RU

Определение качества ПО

Надежность – набор атрибутов, относящихся к способности ПО сохранять свой уровень качества функционирования в установленных условиях за определенный период времени

• Уровень завершенности (отсутствие ошибок)

• Устойчивость к дефектам

• Восстанавливаемость

• Доступность

• Готовность

Page 7: Качественный код? Миф!

07 TIKTOKCOACH.RU

Определение качества ПО

Мобильность — набор атрибутов, относящихся к способности ПО быть перенесенным из одного окружения в другое

• Адаптируемость

• Простота установки

• Сосуществование

• Замещаемость

Page 8: Качественный код? Миф!

08 TIKTOKCOACH.RU

Определение качества ПО

Сопровождаемость - набор атрибутов, относящихся к объему работ, требуемых для проведения конкретных изменений (модификаций)

• Удобство анализа

• Изменяемость

• Стабильность

• Тестируемость

Page 9: Качественный код? Миф!

09 TIKTOKCOACH.RU

Определение качества ПО

Практичность (применимость) — набор атрибутов, относящихся к объему работ, требуемых для исполнения и индивидуальной оценки такого исполнения определенным или предполагаемым кругом пользователей

• Понятность

• Простота использования

• Изучаемость

• Привлекательность

Page 10: Качественный код? Миф!

10 TIKTOKCOACH.RU

Определение качества ПО

Эффективность — набор атрибутов, относящихся к соотношению между уровнем качества функционирования ПО и объемом используемых ресурсов при установленных условиях

• Временная эффективность

• Используемость ресурсов

Page 11: Качественный код? Миф!

11 TIKTOKCOACH.RU

Определение качества ПО

Функциональность — набор атрибутов характеризующий, соответствие функциональных возможностей ПО набору требуемой пользователем функциональности

• Пригодность к применению

• Корректность

• Способность к взаимодействию

• Защищенность

Page 12: Качественный код? Миф!

12 TIKTOKCOACH.RU

Принципы мышления

Группировка Обобщение

Page 13: Качественный код? Миф!

13 TIKTOKCOACH.RU

Абстракция

Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов.

(Гради Буч)

Page 14: Качественный код? Миф!

14 TIKTOKCOACH.RU

Примеры абстракций

Сфера применения

• Процедурное программирование

Абстракция

• Процедура

Page 15: Качественный код? Миф!

15 TIKTOKCOACH.RU

Примеры абстракций

Сфера применения

• Процедурное программирование

• ООП

Абстракция

• Процедура

• Класс

Page 16: Качественный код? Миф!

16 TIKTOKCOACH.RU

Примеры абстракций

Сфера применения

• Процедурное программирование

• ООП

• Предметная область

Абстракция

• Процедура

• Класс

• Абстракция сущности

Page 17: Качественный код? Миф!

17 TIKTOKCOACH.RU

Примеры абстракций

Сфера применения

• Процедурное программирование

• ООП

• Предметная область

• Многопоточное программирование

Абстракция

• Процедура

• Класс

• Абстракция сущности

• Поток

Page 18: Качественный код? Миф!

18 TIKTOKCOACH.RU

Защитный механизм

Абстракция – это то, что не позволяет нам сойти с ума и освоить большой объем информации

Page 19: Качественный код? Миф!

19 TIKTOKCOACH.RU

Пираха – самые счастливые

3 гласных, 8 согласных Нет цифр Нет религии, ремесел, искусства Помнят только то, что помнит старейший живущий

Page 20: Качественный код? Миф!

20 TIKTOKCOACH.RU

Проблема индукции

• Делаются выводы на основе конечного опыта

• Знания носят предельный характер

Курица Б. Рассела

Page 21: Качественный код? Миф!

21 TIKTOKCOACH.RU

Искажение нарратива

Н. Талеб «Черный лебедь» Неспособность воспринимать факты без их интерпретации

Page 22: Качественный код? Миф!

22 TIKTOKCOACH.RU

Ареал-специфичность

Использование тех или иных абстракций и связей между ними зависит от контекста

Page 23: Качественный код? Миф!

23 TIKTOKCOACH.RU

Качественного кода не существует!

Page 24: Качественный код? Миф!

24 TIKTOKCOACH.RU

Объяснение постфактум

Программирование – вещь иррациональная Качество кода придумали как рациональное объяснение иррационального

Page 25: Качественный код? Миф!

25 TIKTOKCOACH.RU

Культурные традиции

Page 26: Качественный код? Миф!

26 TIKTOKCOACH.RU

Группировка идей сверху вниз

Чтобы донести мысли до другого человека, нужно убедиться, что он группирует предметы так же как и Вы

Page 27: Качественный код? Миф!

27 TIKTOKCOACH.RU

Мышление «снизу вверх»

Часто хардкод = не хочу разбираться в чужом коде

Page 28: Качественный код? Миф!

28 TIKTOKCOACH.RU

Пример: список покупок

Мука

Молоко

Батарейки

Морковь

Апельсины

Хлеб

Масло

Яблоки

Ручка

Сок

Детская игрушка

Картофель

Детские тетради

Сметана

Сахар

Виноград

Вода

Page 29: Качественный код? Миф!

29 TIKTOKCOACH.RU

Группировка

Батарейки Детские тетради Ручка Вода Сок Сахар Морковь Апельсины Яблоки Виноград Картофель

Масло

Хлеб

Молоко

Сметана

Мука

Детская игрушка

Page 30: Качественный код? Миф!

30 TIKTOKCOACH.RU

Копи-паст непобедим!!!

Ассемблер –> if, for, switch

Алгоритмы -> процедуры

Процедуры -> классы

Собственный код -> библиотеки

Компьютер -> облако

Page 31: Качественный код? Миф!

31 TIKTOKCOACH.RU

Почему?

Дублирование выходит за рамки применяемой платформы

Page 32: Качественный код? Миф!

32 TIKTOKCOACH.RU

Почему?

Дублирование выходит за рамки применяемой платформы

Дублирование выходит за рамки понимания программиста

Page 33: Качественный код? Миф!

33 TIKTOKCOACH.COM

Эффект Даннинга-Крюгера

Page 34: Качественный код? Миф!

34 TIKTOKCOACH.RU

Дублировать или не дублировать?

Нижний

Скорость,

контроль,

доп. возможности

Верхний

гибкость,

продуктивность

Page 35: Качественный код? Миф!

35 TIKTOKCOACH.RU

Говнокод как оценка своего опыта

Если Ваш код Вам кажется качественным, значит Вы еще не собрали все грабли

Page 36: Качественный код? Миф!

36 TIKTOKCOACH.RU

Пример 1

Page 37: Качественный код? Миф!

37 TIKTOKCOACH.RU

Пример 2

Page 38: Качественный код? Миф!

38 TIKTOKCOACH.RU

Пример 3

Page 39: Качественный код? Миф!

39 TIKTOKCOACH.COM

The Open-Closed Principle

Rob Martin (Uncle Bob)

Page 40: Качественный код? Миф!

40 TIKTOKCOACH.RU

Спасибо

Тюменцев Евгений

Звоните: +7 913 150 22 04

Пишите: [email protected]

Читайте: @tiktokcoach