SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

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

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
 
Безопасная разработка приложений на практике
Безопасная разработка приложений на практикеБезопасная разработка приложений на практике
Безопасная разработка приложений на практикеPointlane
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
 
Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...LuxoftTraining
 
Toad for Oracle для разработчиков – обзор, советы и скрытые возможности
Toad for Oracle для разработчиков – обзор, советы и скрытые возможностиToad for Oracle для разработчиков – обзор, советы и скрытые возможности
Toad for Oracle для разработчиков – обзор, советы и скрытые возможностиBAKOTECH
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаSkillsWiki
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаgeekfamilyrussia
 
Тьюториал "Введение в системную инженерию" (14 января 2013)
Тьюториал "Введение в системную инженерию" (14 января 2013)Тьюториал "Введение в системную инженерию" (14 января 2013)
Тьюториал "Введение в системную инженерию" (14 января 2013)Anatoly Levenchuk
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontendDenis Kolesnikov
 
Логистика производства. Имитационное моделирование
Логистика производства. Имитационное моделированиеЛогистика производства. Имитационное моделирование
Логистика производства. Имитационное моделированиеКлуб Логистов | Логист.ру
 
Agile days `16 summary
Agile days `16 summaryAgile days `16 summary
Agile days `16 summaryAnton Zhukov
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...Iosif Itkin
 
Тестирование осень 2013 лекция 1
Тестирование осень 2013 лекция 1Тестирование осень 2013 лекция 1
Тестирование осень 2013 лекция 1Technopark
 
Developer experience и API как продукт
Developer experience и API как продуктDeveloper experience и API как продукт
Developer experience и API как продуктAnastasia Goryacheva
 
Представление знаний в технических системах
Представление знаний в технических системахПредставление знаний в технических системах
Представление знаний в технических системахAnatoly Levenchuk
 
Практики жизненного цикла систем машинного обучения
Практики жизненного цикла систем машинного обученияПрактики жизненного цикла систем машинного обучения
Практики жизненного цикла систем машинного обученияCEE-SEC(R)
 
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018Timur Shemsedinov
 

Ähnlich wie Качественный код? Миф! (20)

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...
 
Безопасная разработка приложений на практике
Безопасная разработка приложений на практикеБезопасная разработка приложений на практике
Безопасная разработка приложений на практике
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
 
Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...
 
Toad for Oracle для разработчиков – обзор, советы и скрытые возможности
Toad for Oracle для разработчиков – обзор, советы и скрытые возможностиToad for Oracle для разработчиков – обзор, советы и скрытые возможности
Toad for Oracle для разработчиков – обзор, советы и скрытые возможности
 
Forum zapas
Forum zapasForum zapas
Forum zapas
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчика
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчика
 
Тьюториал "Введение в системную инженерию" (14 января 2013)
Тьюториал "Введение в системную инженерию" (14 января 2013)Тьюториал "Введение в системную инженерию" (14 января 2013)
Тьюториал "Введение в системную инженерию" (14 января 2013)
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontend
 
Логистика производства. Имитационное моделирование
Логистика производства. Имитационное моделированиеЛогистика производства. Имитационное моделирование
Логистика производства. Имитационное моделирование
 
Agile days `16 summary
Agile days `16 summaryAgile days `16 summary
Agile days `16 summary
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
 
Тестирование осень 2013 лекция 1
Тестирование осень 2013 лекция 1Тестирование осень 2013 лекция 1
Тестирование осень 2013 лекция 1
 
How to draw DevOps
How to draw DevOpsHow to draw DevOps
How to draw DevOps
 
Developer experience и API как продукт
Developer experience и API как продуктDeveloper experience и API как продукт
Developer experience и API как продукт
 
Представление знаний в технических системах
Представление знаний в технических системахПредставление знаний в технических системах
Представление знаний в технических системах
 
Практики жизненного цикла систем машинного обучения
Практики жизненного цикла систем машинного обученияПрактики жизненного цикла систем машинного обучения
Практики жизненного цикла систем машинного обучения
 
Tehnopark russian
Tehnopark russian Tehnopark russian
Tehnopark russian
 
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
 

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

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