![Page 1: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/1.jpg)
Методы разработкикачественного и
"чистого" кодаНовиков Иван
![Page 3: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/3.jpg)
Моя позиция может несовпадать с позициейкомпаний, в которых я
работаю
![Page 4: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/4.jpg)
Кто я?
![Page 5: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/5.jpg)
Novikov IvanCTO at & Backend engineer at Amiforus ozon.travel
http://jonnynovikov.com/
![Page 6: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/6.jpg)
AgendaTDD
РЕФАКТОРИНГАРХИТЕКТУРА
ПРОЦЕССЫПРИМЕРЫ НА C#
ДИАГНОЗ И ЗАКЛЮЧЕНИЕQ&A
![Page 7: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/7.jpg)
TDD?
![Page 8: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/8.jpg)
TDD...будем дальше считать академическим видом
программированияSUT, SUD, .... почему все-таки TDD - огромный
вклад в развитие инженерии в целом?
![Page 9: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/9.jpg)
РЕФАКТОРИНГне должен изменять семантику
должен улучшать качество
![Page 10: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/10.jpg)
РЕФАКТОРИНГне панацея
стоимость, необходимость
![Page 11: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/11.jpg)
АРХИТЕКТУРА
![Page 12: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/12.jpg)
Несовершенная архитектуранепредвиденные изменения
существенные изменения
![Page 13: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/13.jpg)
REFACTOR!непредвиденные изменения
REBUILD!существенные изменения
![Page 14: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/14.jpg)
РЕФАКТОРИНГ ТРЕБУЕТАНАЛИЗАРефактори СВОЁ!
хлам от рефакторинга останется хламом (GIGO)никакое его количество не спасет дефектную
архитектуру
![Page 15: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/15.jpg)
RebuildУдачи!
![Page 16: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/16.jpg)
ПРОЦЕССЫ
![Page 17: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/17.jpg)
РАЗРАБОТКА, управляемаятестами
полноценный метод разработки ПО
![Page 18: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/18.jpg)
Test First Developmentcreate test
modify: code the simple thingrefactor
![Page 19: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/19.jpg)
"Make it work. Make it right. Make itfast."
Kent Beck
![Page 20: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/20.jpg)
Test Driven Developmentcreate test
check test is failedmodify: code the simple thing
ensure test is passedcontinuous refactor (unify)
![Page 21: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/21.jpg)
"Лондонская школа TDD"моки как средство унификации проектирования
ПО
![Page 22: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/22.jpg)
Реальность
![Page 23: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/23.jpg)
Code example
![Page 24: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/24.jpg)
О спецификациях(MSpec)
![Page 25: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/25.jpg)
Основные принципыПростота (KISS)"Чистый" код
Не делай то, что сейчас не используешь (YAGNI)
![Page 26: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/26.jpg)
Attention
![Page 27: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/27.jpg)
Будьте скептикомРазработку, управляемую тестами стоит
попробоватьМоки необходимо использовать
ТОЛЬКО там, где они действительно нужныи еще...
![Page 28: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/28.jpg)
Где меня обманулитесты - это не все, что нужно для спецификации
ПОтест более специфичен, чем user story
поиски общих правил, нет рецепта генерацииспецификации по тестам
![Page 29: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/29.jpg)
Почему все-таки класснаяштука?
каждый новый код должен сопровождатьсятестами
экстремальный вариант хороший способзаставить себя сделать это
![Page 30: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/30.jpg)
Немного кода
![Page 31: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/31.jpg)
Почему многиеВООБЩЕ не пишут
тесты?- "Зачем проверять только состояния?"
- "Это отнимет всё время"- "Их невозможно поддерживать"
![Page 32: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/32.jpg)
Почему ПИШУТ и дажеразрабатывают через
тесты?У них есть рецепт, который другие не знают?
![Page 33: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/33.jpg)
Проблемы заглушек
![Page 34: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/34.jpg)
Isolation FrameworkИспользуя NSubstitute
https://github.com/nsubstitute/NSubstituteкод с предыдущего слайда превращается в
![Page 36: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/36.jpg)
С блэкджеком и...девочками
IoC + Nancy https://github.com/NancyFx/Nancy
![Page 37: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/37.jpg)
О необходимоститестирования
![Page 39: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/39.jpg)
Вырастающаясложность
![Page 40: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/40.jpg)
Поддержка
![Page 41: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/41.jpg)
Проектирование ипрограммирование -
виды человеческой деятельности;стоит об этом забыть – и все пропало.
Бьярн Страуструп, 1991
![Page 42: Методы разработки качественного и чистого кода](https://reader030.vdocuments.pub/reader030/viewer/2022032613/587b19ce1a28ab736c8b4dd5/html5/thumbnails/42.jpg)
Что начать читать завтра?Ironies of Automation, 1983
Test-Driven development: By example (Kent Beck,2003)
Исскуство автономного тестирования (РойОшервуд):
или русская english&
Что посмотреть вместосериала?
Norwegian Developers Conference (NDC)
http://j.mp/ndcconferences