Разделы презентаций


Что не так с моим кодом или 7 причин моих страданий

Содержание

Почему я здесь?Приходится иметь дело с плохим или нестабильным кодом

Слайды и текст этой презентации

Слайд 1Что не так с моим кодом или 7 причин моих

страданий
Андрей Воробьёв
30.11.2019

Что не так с моим кодом или 7 причин моих страданийАндрей Воробьёв30.11.2019

Слайд 2Почему я здесь?
Приходится иметь дело с плохим или нестабильным кодом

Почему я здесь?Приходится иметь дело с плохим или нестабильным кодом

Слайд 3Пример номер раз
Нет опыта разработки;
Единственный разработчик.

Пример номер разНет опыта разработки;Единственный разработчик.

Слайд 4Пример номер раз
Результат:
Огромные классы и методы;
Классы имели множество ответственностей и

были сильно связаны друг с другом;
Отсутствие юнит-тестов;
Расширять функциональность с каждым

разом становилось всё сложней.

Пример номер разРезультат:Огромные классы и методы;Классы имели множество ответственностей и были сильно связаны друг с другом;Отсутствие юнит-тестов;Расширять

Слайд 5Пример номер два
Класс-команда для вычисления:
Класс разбит на 7 файлов;
Общий объем

почти 10к строк кода;
Слишком много умеет и знает.

Пример номер дваКласс-команда для вычисления:Класс разбит на 7 файлов;Общий объем почти 10к строк кода;Слишком много умеет и

Слайд 6Пример номер два
Результат:
Запутанный и нестабильный класс;
Невозможно покрыть тестами;
Страшно изменять.

Пример номер дваРезультат:Запутанный и нестабильный класс;Невозможно покрыть тестами;Страшно изменять.

Слайд 77 смертных грехов программирования

7 смертных грехов  программирования

Слайд 81. Спешка

1. Спешка

Слайд 92. Апатия

2. Апатия

Слайд 103. Леность

3. Леность

Слайд 114. Ограниченность мышления

4. Ограниченность мышления

Слайд 125. Алчность

5. Алчность

Слайд 136. Невежество

6. Невежество

Слайд 147. Гордыня

7. Гордыня

Слайд 15Наиболее частые ошибки. Антипаттерны

Наиболее частые ошибки. Антипаттерны

Слайд 16Антипаттерны разработки

Антипаттерны разработки

Слайд 17God Object
— Мне нужен такой-то функционал
— Используй MegaCoreObject!


— А ещё, мне нужен …
— Я

же сказал, используй MegaCoreObject!
God Object — Мне нужен такой-то функционал — Используй MegaCoreObject! — А ещё, мне нужен … —

Слайд 18God Object
Признаки:
Большое число несвязных и несогласованных свойств и методов;
Один класс

содержит всю основную логику приложения;
Внесение нового кода в уже существующие

классы, вместо создания новых и пересмотра иерархии классов для лучшего распределения обязанностей.




God ObjectПризнаки:Большое число несвязных и несогласованных свойств и методов;Один класс содержит всю основную логику приложения;Внесение нового кода

Слайд 19God Object
Следствие:
Сложно вносить изменения внутри God Object;
Сложно использовать повторно;
Сложно тестировать.

God ObjectСледствие:Сложно вносить изменения внутри God Object;Сложно использовать повторно;Сложно тестировать.

Слайд 20Golden Hammer (Silver Bullet)
— Когда у тебя в руках есть

только молоток, тогда всё вокруг превращается в гвозди.

А. Маслоу

Golden Hammer (Silver Bullet)— Когда у тебя в руках есть только молоток, тогда всё вокруг превращается в

Слайд 21Golden Hammer (Silver Bullet)
Предпосылки:
Стремление использовать знакомую технологию;
Отсутствие опыта с другими

технологиями;
Риск при переходе на другое решение;
Политические причины;
Уверенность в преимуществах собственного

решения.
Golden Hammer (Silver Bullet)Предпосылки:Стремление использовать знакомую технологию;Отсутствие опыта с другими технологиями;Риск при переходе на другое решение;Политические причины;Уверенность

Слайд 22Golden Hammer (Silver Bullet)
Следствие:
неоптимальное решение;
ненужное усложнение или недопустимое упрощение системы.

Golden Hammer (Silver Bullet)Следствие:неоптимальное решение;ненужное усложнение или недопустимое упрощение системы.

Слайд 23Lava Flow
— Не знаю, как это работает, но оно работает.

Не удалять и не менять!

Lava Flow— Не знаю, как это работает, но оно работает. Не удалять и не менять!

Слайд 24Lava Flow
Предпосылки
Отсутствие Code Review;
Отсутствие проектирования разработки;
Недостаток опыта работы с технологией;
Нет

времени на рефакторинг и технический долг.

Lava FlowПредпосылкиОтсутствие Code Review;Отсутствие проектирования разработки;Недостаток опыта работы с технологией;Нет времени на рефакторинг и технический долг.

Слайд 25Lava Flow
Следствие:
Увеличивается сложность проекта;
Замедляется скорость разработки проекта;
Сложно провести рефакторинг или

внести новую функциональность.

Lava FlowСледствие:Увеличивается сложность проекта;Замедляется скорость разработки проекта;Сложно провести рефакторинг или внести новую функциональность.

Слайд 26Кулинарные антипаттерны

Кулинарные антипаттерны

Слайд 27Hardcoding & Magic Number


var path = "C:/Projects/MyProject/Data/FirstTest";



var connection = Service.Connect("localhost/api");



var

peopleAmount = GetEuropePopulation() + 602005;

Hardcoding & Magic Numbervar path =

Слайд 28Hardcoding & Magic Number
Предпосылки:
Хардкод во время разработки или отладки;
Спешка.


Hardcoding & Magic NumberПредпосылки:Хардкод во время разработки или отладки;Спешка.

Слайд 29Hardcoding & Magic Number
Следствие:
Исправная работа только в окружении, в котором

ведётся разработка;
Неустойчивость к изменениям;
Требуется повторный деплой.

Hardcoding & Magic NumberСледствие:Исправная работа только в окружении, в котором ведётся разработка;Неустойчивость к изменениям;Требуется повторный деплой.

Слайд 30Hardcoding & Magic Number


var path = "C:/Projects/MyProject/Data/FirstTest.xml";



var connection = Service.Connect("localhost/api");



var

peopleAmount = GetEuropePopulation() + 602005;

Hardcoding & Magic Numbervar path =

Слайд 31Hardcoding & Magic Number


var path = Path.Combine(Directory.GetCurrentDirectory(), dataPath);



var connection =

Service.Connect(Settings.OperationServiceAddress);



var peopleAmount = GetEuropePopulation() + LuxembourgPopulation2018;

Hardcoding & Magic Numbervar path = Path.Combine(Directory.GetCurrentDirectory(), dataPath);var connection = Service.Connect(Settings.OperationServiceAddress);var peopleAmount = GetEuropePopulation() + LuxembourgPopulation2018;

Слайд 32Programming by permutation

Programming by permutation

Слайд 33Programming by permutation
Предпосылки:
Отсутствие желания понять как работает код;
Отсутствие документации;
Низкая компетенция

разработчика.

Programming by permutationПредпосылки:Отсутствие желания понять как работает код;Отсутствие документации;Низкая компетенция разработчика.

Слайд 34Programming by permutation
Следствие:
Невозможно предусмотреть все сценарии;
Будет потрачено время на решение

задачи перебором, а после, повторно потратится время на переделку решения;
Приучает

разработчика к тому, что написание кода — это магия, а не инженерная работа.

Programming by permutationСледствие:Невозможно предусмотреть все сценарии;Будет потрачено время на решение задачи перебором, а после, повторно потратится время

Слайд 35Архитектурные антипаттерны

Архитектурные антипаттерны

Слайд 36Over-Engineering

Over-Engineering

Слайд 37Over-Engineering
Предпосылки:
Необходимость покрыть потребности небольшой части пользователей;
Преждевременное усложнение системы;
Желание продемонстрировать свои

способности.

Over-EngineeringПредпосылки:Необходимость покрыть потребности небольшой части пользователей;Преждевременное усложнение системы;Желание продемонстрировать свои способности.

Слайд 38Over-Engineering
Следствие:
Потрачено слишком много сил/времени/денег на функционал, который не нужен большинству

пользователей;
Продукт стал слишком дорогим и/или долгим, из-за чего он так

и не был выпущен.



Over-EngineeringСледствие:Потрачено слишком много сил/времени/денег на функционал, который не нужен большинству пользователей;Продукт стал слишком дорогим и/или долгим, из-за

Слайд 39Not Invented Here & Reinventing the Wheel

Not Invented Here & Reinventing the Wheel

Слайд 40Not Invented Here & Reinventing the Wheel
Предпосылки:
Высокая цена решения;
Недоверие к

чужой разработке;
Желание поддержать свой продукт/компанию;
Гордыня;
Вера в то, что свои программисты

лучше всех.
Not Invented Here & Reinventing the WheelПредпосылки:Высокая цена решения;Недоверие к чужой разработке;Желание поддержать свой продукт/компанию;Гордыня;Вера в то,

Слайд 41Not Invented Here & Reinventing the Wheel
Следствие:
Новый велосипед может оказаться

недостаточно функциональным или надёжным;
Нужно поддерживать собственными силами;
Потеря денег/времени.

Not Invented Here & Reinventing the WheelСледствие:Новый велосипед может оказаться недостаточно функциональным или надёжным;Нужно поддерживать собственными силами;Потеря

Слайд 42Заключение

Заключение

Слайд 43Вопросы? Истории?

Вопросы? Истории?

Слайд 44E-mail: andrei_vorobev@epam.com
Контакты

E-mail: andrei_vorobev@epam.comКонтакты

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика