SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
Качественный  код? Миф!
01 TIKTOKCOACH.RU
Докладчик

Тюменцев  Евгений
Разработка  кросс-платформенных  приложений
Руководство  отделом  разработки  ПО  в  40  человек
Тех.  директор  ИТ-компании  в  70  человек
Управляющий  партнер  стартапа “Тик-Так  Коуч”
02 TIKTOKCOACH.RU
Качественного  кода  не  
существует!
03 TIKTOKCOACH.RU
Спасибо  за  внимание  

04 TIKTOKCOACH.RU
Определение  качества  ПО
ISO 9126
Качество  ПО  – совокупная  характеристика  ПО  с  учетом  
следующих  составляющих:
–
–
–
–
–
–

Надежность
Сопровождаемость
Практичность
Эффективность
Мобильность
Функциональность

05 TIKTOKCOACH.RU
Определение  качества  ПО
Надежность – набор  атрибутов,  относящихся  к  способности  
ПО  сохранять  свой  уровень  качества  функционирования  в  
установленных  условиях  за  определенный  период  
времени
• Уровень  завершенности  
(отсутствие  ошибок)
• Устойчивость  к  дефектам
• Восстанавливаемость
• Доступность
• Готовность

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
Пираха – самые  счастливые

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

• Делаются  выводы  на  основе  
конечного  опыта
• Знания  носят  предельный  
характер

Курица  Б.  Рассела
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

Молоко
Сметана
Мука

Детская  игрушка
Копи-паст  непобедим!!!

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

30 TIKTOKCOACH.RU
Почему?
Дублирование  выходит  за  рамки  
применяемой  платформы

31 TIKTOKCOACH.RU
Почему?
Дублирование  выходит  за  рамки  
применяемой  платформы
Дублирование  выходит  за  рамки  понимания  
программиста

32 TIKTOKCOACH.RU
Эффект  Даннинга-Крюгера

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

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

34 TIKTOKCOACH.RU

Верхний

гибкость,
продуктивность
Говнокод как  оценка  своего  опыта  

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

36 TIKTOKCOACH.RU
Пример  2      

37 TIKTOKCOACH.RU
Пример  3  

38 TIKTOKCOACH.RU
The Open-Closed Principle

Rob Martin (Uncle Bob)
39 TIKTOKCOACH.COM
Спасибо

Тюменцев  Евгений
Звоните: +7 913 150 22 04
Пишите: etyumentcev@tiktokcoach.ru
Читайте: @tiktokcoach

40 TIKTOKCOACH.RU

Weitere ähnliche Inhalte

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

икт компетентность новое
икт компетентность новоеикт компетентность новое
икт компетентность новое
Palshina
 
резиденты сколково
резиденты сколковорезиденты сколково
резиденты сколково
Andrey Mushchinkin
 
2014-03-01 02 Евгений Тюменцев. Почему буксует тайм-менеджмент
2014-03-01 02 Евгений Тюменцев. Почему буксует тайм-менеджмент2014-03-01 02 Евгений Тюменцев. Почему буксует тайм-менеджмент
2014-03-01 02 Евгений Тюменцев. Почему буксует тайм-менеджмент
Омские ИТ-субботники
 
Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...
LuxoftTraining
 
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
Alex V. Petrov
 

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

Открытая лекция для студентов МГТУ ГА (декабрь 2013)
Открытая лекция для студентов МГТУ ГА (декабрь 2013)Открытая лекция для студентов МГТУ ГА (декабрь 2013)
Открытая лекция для студентов МГТУ ГА (декабрь 2013)
 
Логические инструменты в арсенале тестировщика
Логические инструменты в арсенале тестировщикаЛогические инструменты в арсенале тестировщика
Логические инструменты в арсенале тестировщика
 
Я хочу работать с OpenStack! Куда идти и что нужно знать?
Я хочу работать с OpenStack! Куда идти и что нужно знать?Я хочу работать с OpenStack! Куда идти и что нужно знать?
Я хочу работать с OpenStack! Куда идти и что нужно знать?
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
 
Тьюториал "Введение в системную инженерию" (14 января 2013)
Тьюториал "Введение в системную инженерию" (14 января 2013)Тьюториал "Введение в системную инженерию" (14 января 2013)
Тьюториал "Введение в системную инженерию" (14 января 2013)
 
почему буксует тайм менеджмент
почему буксует тайм менеджментпочему буксует тайм менеджмент
почему буксует тайм менеджмент
 
Бизнес-разведка как инструмент коммерциализации результатов научной деятельности
Бизнес-разведка как инструмент коммерциализации результатов научной деятельностиБизнес-разведка как инструмент коммерциализации результатов научной деятельности
Бизнес-разведка как инструмент коммерциализации результатов научной деятельности
 
Презентация Сколково на конференции Перспективные системы и задачи упралвления
 Презентация Сколково на конференции Перспективные системы и задачи упралвления Презентация Сколково на конференции Перспективные системы и задачи упралвления
Презентация Сколково на конференции Перспективные системы и задачи упралвления
 
Артамонова Ю.С.
Артамонова Ю.С. Артамонова Ю.С.
Артамонова Ю.С.
 
икт компетентность новое
икт компетентность новоеикт компетентность новое
икт компетентность новое
 
резиденты сколково
резиденты сколковорезиденты сколково
резиденты сколково
 
Антон Колошин - Формирование межрегионального Smart ЦОК ИТ
Антон Колошин - Формирование межрегионального Smart ЦОК ИТАнтон Колошин - Формирование межрегионального Smart ЦОК ИТ
Антон Колошин - Формирование межрегионального Smart ЦОК ИТ
 
2014-03-01 02 Евгений Тюменцев. Почему буксует тайм-менеджмент
2014-03-01 02 Евгений Тюменцев. Почему буксует тайм-менеджмент2014-03-01 02 Евгений Тюменцев. Почему буксует тайм-менеджмент
2014-03-01 02 Евгений Тюменцев. Почему буксует тайм-менеджмент
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчика
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчика
 
Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...
 
Сколково. Кластер ИТ
Сколково. Кластер ИТСколково. Кластер ИТ
Сколково. Кластер ИТ
 
Tehnopark russian
Tehnopark russian Tehnopark russian
Tehnopark russian
 
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
 
Комплекс Технопарк «Сколково» Очередь 1
Комплекс Технопарк «Сколково» Очередь 1Комплекс Технопарк «Сколково» Очередь 1
Комплекс Технопарк «Сколково» Очередь 1
 

Mehr von Омские ИТ-субботники

2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
Омские ИТ-субботники
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
Омские ИТ-субботники
 

Mehr von Омские ИТ-субботники (20)

2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
 
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
 
2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
 
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
 
2017-02-04 02 Яков Лило. Решение задач
2017-02-04 02 Яков Лило. Решение задач2017-02-04 02 Яков Лило. Решение задач
2017-02-04 02 Яков Лило. Решение задач
 
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке
 
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
 
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
 
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
 
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
 
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
 
2016-09-17 03 Василий Полозов. WebRTC
2016-09-17 03 Василий Полозов. WebRTC2016-09-17 03 Василий Полозов. WebRTC
2016-09-17 03 Василий Полозов. WebRTC
 

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