Upload
ivan-novikov
View
115
Download
1
Embed Size (px)
Citation preview
Методы разработкикачественного и
"чистого" кодаНовиков Иван
Моя позиция может несовпадать с позициейкомпаний, в которых я
работаю
Кто я?
Novikov IvanCTO at & Backend engineer at Amiforus ozon.travel
http://jonnynovikov.com/
AgendaTDD
РЕФАКТОРИНГАРХИТЕКТУРА
ПРОЦЕССЫПРИМЕРЫ НА C#
ДИАГНОЗ И ЗАКЛЮЧЕНИЕQ&A
TDD?
TDD...будем дальше считать академическим видом
программированияSUT, SUD, .... почему все-таки TDD - огромный
вклад в развитие инженерии в целом?
РЕФАКТОРИНГне должен изменять семантику
должен улучшать качество
РЕФАКТОРИНГне панацея
стоимость, необходимость
АРХИТЕКТУРА
Несовершенная архитектуранепредвиденные изменения
существенные изменения
REFACTOR!непредвиденные изменения
REBUILD!существенные изменения
РЕФАКТОРИНГ ТРЕБУЕТАНАЛИЗАРефактори СВОЁ!
хлам от рефакторинга останется хламом (GIGO)никакое его количество не спасет дефектную
архитектуру
RebuildУдачи!
ПРОЦЕССЫ
РАЗРАБОТКА, управляемаятестами
полноценный метод разработки ПО
Test First Developmentcreate test
modify: code the simple thingrefactor
"Make it work. Make it right. Make itfast."
Kent Beck
Test Driven Developmentcreate test
check test is failedmodify: code the simple thing
ensure test is passedcontinuous refactor (unify)
"Лондонская школа TDD"моки как средство унификации проектирования
ПО
Реальность
Code example
О спецификациях(MSpec)
Основные принципыПростота (KISS)"Чистый" код
Не делай то, что сейчас не используешь (YAGNI)
Attention
Будьте скептикомРазработку, управляемую тестами стоит
попробоватьМоки необходимо использовать
ТОЛЬКО там, где они действительно нужныи еще...
Где меня обманулитесты - это не все, что нужно для спецификации
ПОтест более специфичен, чем user story
поиски общих правил, нет рецепта генерацииспецификации по тестам
Почему все-таки класснаяштука?
каждый новый код должен сопровождатьсятестами
экстремальный вариант хороший способзаставить себя сделать это
Немного кода
Почему многиеВООБЩЕ не пишут
тесты?- "Зачем проверять только состояния?"
- "Это отнимет всё время"- "Их невозможно поддерживать"
Почему ПИШУТ и дажеразрабатывают через
тесты?У них есть рецепт, который другие не знают?
Проблемы заглушек
Isolation FrameworkИспользуя NSubstitute
https://github.com/nsubstitute/NSubstituteкод с предыдущего слайда превращается в
Mocking FrameworkMoq https://github.com/Moq/moq4
С блэкджеком и...девочками
IoC + Nancy https://github.com/NancyFx/Nancy
О необходимоститестирования
Тесты - тоже искусствоSelenium WebDriver http://seleniumhq.org
Вырастающаясложность
Поддержка
Проектирование ипрограммирование -
виды человеческой деятельности;стоит об этом забыть – и все пропало.
Бьярн Страуструп, 1991
Что начать читать завтра?Ironies of Automation, 1983
Test-Driven development: By example (Kent Beck,2003)
Исскуство автономного тестирования (РойОшервуд):
или русская english&
Что посмотреть вместосериала?
Norwegian Developers Conference (NDC)
http://j.mp/ndcconferences
Q&AПрезентация тут: http://j.mp/quality-evolve