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

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

Upload: -

Post on 16-Jun-2015

432 views

Category:

Technology


1 download

TRANSCRIPT

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

01 TIKTOKCOACH.RU

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

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

02 TIKTOKCOACH.RU

Докладчик

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

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

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

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

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

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

03 TIKTOKCOACH.RU

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

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

04 TIKTOKCOACH.RU

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

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

05 TIKTOKCOACH.RU

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

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

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

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

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

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

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

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

06 TIKTOKCOACH.RU

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

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

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

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

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

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

• Готовность

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

07 TIKTOKCOACH.RU

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

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

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

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

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

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

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

08 TIKTOKCOACH.RU

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

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

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

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

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

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

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

09 TIKTOKCOACH.RU

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

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

• Понятность

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

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

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

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

10 TIKTOKCOACH.RU

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

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

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

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

11 TIKTOKCOACH.RU

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

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

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

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

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

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

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

12 TIKTOKCOACH.RU

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

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

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

13 TIKTOKCOACH.RU

Абстракция

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

(Гради Буч)

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

14 TIKTOKCOACH.RU

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

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

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

Абстракция

• Процедура

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

15 TIKTOKCOACH.RU

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

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

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

• ООП

Абстракция

• Процедура

• Класс

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

16 TIKTOKCOACH.RU

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

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

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

• ООП

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

Абстракция

• Процедура

• Класс

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

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

17 TIKTOKCOACH.RU

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

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

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

• ООП

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

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

Абстракция

• Процедура

• Класс

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

• Поток

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

18 TIKTOKCOACH.RU

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

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

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

19 TIKTOKCOACH.RU

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

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

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

20 TIKTOKCOACH.RU

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

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

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

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

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

21 TIKTOKCOACH.RU

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

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

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

22 TIKTOKCOACH.RU

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

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

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

23 TIKTOKCOACH.RU

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

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

24 TIKTOKCOACH.RU

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

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

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

25 TIKTOKCOACH.RU

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

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

26 TIKTOKCOACH.RU

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

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

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

27 TIKTOKCOACH.RU

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

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

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

28 TIKTOKCOACH.RU

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

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

Морковь

Апельсины

Хлеб

Масло

Яблоки

Ручка

Сок

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

Картофель

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

Сметана

Сахар

Виноград

Вода

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

29 TIKTOKCOACH.RU

Группировка

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

Масло

Хлеб

Молоко

Сметана

Мука

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

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

30 TIKTOKCOACH.RU

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

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

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

31 TIKTOKCOACH.RU

Почему?

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

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

32 TIKTOKCOACH.RU

Почему?

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

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

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

33 TIKTOKCOACH.COM

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

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

34 TIKTOKCOACH.RU

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

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

Верхний

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

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

35 TIKTOKCOACH.RU

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

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

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

36 TIKTOKCOACH.RU

Пример  1      

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

37 TIKTOKCOACH.RU

Пример  2      

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

38 TIKTOKCOACH.RU

Пример  3  

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

39 TIKTOKCOACH.COM

The Open-Closed Principle

Rob Martin (Uncle Bob)

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

40 TIKTOKCOACH.RU

Спасибо

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

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

Пишите: [email protected]

Читайте: @tiktokcoach