2014-02-01 01 Евгений Тюменцев. Качественный код - миф

Preview:

Citation preview

01 TIKTOKCOACH.RU

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

02 TIKTOKCOACH.RU

Докладчик

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

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

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

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

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

03 TIKTOKCOACH.RU

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

04 TIKTOKCOACH.RU

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

05 TIKTOKCOACH.RU

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

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

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

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

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

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

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

06 TIKTOKCOACH.RU

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

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

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

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

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

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

• Готовность

07 TIKTOKCOACH.RU

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

способности  ПО  быть  перенесенным  из  одного  окружения  в  другое

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

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

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

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

08 TIKTOKCOACH.RU

Определение  качества  ПО Сопровождаемость - набор  атрибутов,  относящихся  к  

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

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

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

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

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

09 TIKTOKCOACH.RU

Определение  качества  ПО Практичность  (применимость) — набор  атрибутов,  

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

• Понятность

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

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

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

10 TIKTOKCOACH.RU

Определение  качества  ПО Эффективность — набор  атрибутов,  относящихся  к  

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

• Временная  эффективность • Используемость  ресурсов

11 TIKTOKCOACH.RU

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

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

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

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

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

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

12 TIKTOKCOACH.RU

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

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

13 TIKTOKCOACH.RU

Абстракция

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

(Гради Буч)

14 TIKTOKCOACH.RU

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

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

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

Абстракция

• Процедура

15 TIKTOKCOACH.RU

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

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

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

• ООП

Абстракция

• Процедура

• Класс

16 TIKTOKCOACH.RU

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

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

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

• ООП

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

Абстракция

• Процедура

• Класс

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

17 TIKTOKCOACH.RU

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

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

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

• ООП

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

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

Абстракция

• Процедура

• Класс

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

• Поток

18 TIKTOKCOACH.RU

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

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

19 TIKTOKCOACH.RU

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

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

20 TIKTOKCOACH.RU

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

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

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

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

21 TIKTOKCOACH.RU

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

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

22 TIKTOKCOACH.RU

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

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

23 TIKTOKCOACH.RU

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

24 TIKTOKCOACH.RU

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

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

25 TIKTOKCOACH.RU

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

26 TIKTOKCOACH.RU

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

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

27 TIKTOKCOACH.RU

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

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

28 TIKTOKCOACH.RU

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

Молоко   Батарейки

Морковь

Апельсины

Хлеб

Масло

Яблоки

Ручка

Сок

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

Картофель

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

Сметана

Сахар

Виноград

Вода

29 TIKTOKCOACH.RU

Группировка

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

Масло

Хлеб

Молоко

Сметана

Мука

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

30 TIKTOKCOACH.RU

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

Ассемблер  –> if, for, switch Алгоритмы  -> процедуры Процедуры  -> классы Собственный  код  -> библиотеки Компьютер  -> облако

31 TIKTOKCOACH.RU

Почему?

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

32 TIKTOKCOACH.RU

Почему?

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

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

33 TIKTOKCOACH.COM

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

34 TIKTOKCOACH.RU

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

Скорость, контроль, доп.  возможности

Верхний

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

35 TIKTOKCOACH.RU

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

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

36 TIKTOKCOACH.RU

Пример  1      

37 TIKTOKCOACH.RU

Пример  2      

38 TIKTOKCOACH.RU

Пример  3  

39 TIKTOKCOACH.COM

The Open-Closed Principle

Rob Martin (Uncle Bob)

40 TIKTOKCOACH.RU

Спасибо

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

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

Пишите: etyumentcev@tiktokcoach.ru

Читайте: @tiktokcoach

Recommended