Содержание
- 2. Почему я здесь? Приходится иметь дело с плохим или нестабильным кодом
- 3. Пример номер раз Нет опыта разработки; Единственный разработчик.
- 4. Пример номер раз Результат: Огромные классы и методы; Классы имели множество ответственностей и были сильно связаны
- 5. Пример номер два Класс-команда для вычисления: Класс разбит на 7 файлов; Общий объем почти 10к строк
- 6. Пример номер два Результат: Запутанный и нестабильный класс; Невозможно покрыть тестами; Страшно изменять.
- 7. 7 смертных грехов программирования
- 8. 1. Спешка
- 9. 2. Апатия
- 10. 3. Леность
- 11. 4. Ограниченность мышления
- 12. 5. Алчность
- 13. 6. Невежество
- 14. 7. Гордыня
- 15. Наиболее частые ошибки. Антипаттерны
- 16. Антипаттерны разработки
- 17. God Object — Мне нужен такой-то функционал — Используй MegaCoreObject! — А ещё, мне нужен …
- 18. God Object Признаки: Большое число несвязных и несогласованных свойств и методов; Один класс содержит всю основную
- 19. God Object Следствие: Сложно вносить изменения внутри God Object; Сложно использовать повторно; Сложно тестировать.
- 20. Golden Hammer (Silver Bullet) — Когда у тебя в руках есть только молоток, тогда всё вокруг
- 21. Golden Hammer (Silver Bullet) Предпосылки: Стремление использовать знакомую технологию; Отсутствие опыта с другими технологиями; Риск при
- 22. Golden Hammer (Silver Bullet) Следствие: неоптимальное решение; ненужное усложнение или недопустимое упрощение системы.
- 23. Lava Flow — Не знаю, как это работает, но оно работает. Не удалять и не менять!
- 24. Lava Flow Предпосылки Отсутствие Code Review; Отсутствие проектирования разработки; Недостаток опыта работы с технологией; Нет времени
- 25. Lava Flow Следствие: Увеличивается сложность проекта; Замедляется скорость разработки проекта; Сложно провести рефакторинг или внести новую
- 26. Кулинарные антипаттерны
- 27. Hardcoding & Magic Number var path = "C:/Projects/MyProject/Data/FirstTest"; var connection = Service.Connect("localhost/api"); var peopleAmount = GetEuropePopulation()
- 28. Hardcoding & Magic Number Предпосылки: Хардкод во время разработки или отладки; Спешка.
- 29. Hardcoding & Magic Number Следствие: Исправная работа только в окружении, в котором ведётся разработка; Неустойчивость к
- 30. Hardcoding & Magic Number var path = "C:/Projects/MyProject/Data/FirstTest.xml"; var connection = Service.Connect("localhost/api"); var peopleAmount = GetEuropePopulation()
- 31. Hardcoding & Magic Number var path = Path.Combine(Directory.GetCurrentDirectory(), dataPath); var connection = Service.Connect(Settings.OperationServiceAddress); var peopleAmount =
- 32. Programming by permutation
- 33. Programming by permutation Предпосылки: Отсутствие желания понять как работает код; Отсутствие документации; Низкая компетенция разработчика.
- 34. Programming by permutation Следствие: Невозможно предусмотреть все сценарии; Будет потрачено время на решение задачи перебором, а
- 35. Архитектурные антипаттерны
- 36. Over-Engineering
- 37. Over-Engineering Предпосылки: Необходимость покрыть потребности небольшой части пользователей; Преждевременное усложнение системы; Желание продемонстрировать свои способности.
- 38. Over-Engineering Следствие: Потрачено слишком много сил/времени/денег на функционал, который не нужен большинству пользователей; Продукт стал слишком
- 39. Not Invented Here & Reinventing the Wheel
- 40. Not Invented Here & Reinventing the Wheel Предпосылки: Высокая цена решения; Недоверие к чужой разработке; Желание
- 41. Not Invented Here & Reinventing the Wheel Следствие: Новый велосипед может оказаться недостаточно функциональным или надёжным;
- 42. Заключение
- 43. Вопросы? Истории?
- 45. Скачать презентацию