43
Методы разработки качественного и "чистого" кода Новиков Иван

Методы разработки качественного и чистого кода

Embed Size (px)

Citation preview

Page 1: Методы разработки качественного и чистого кода

Методы разработкикачественного и

"чистого" кодаНовиков Иван

Page 2: Методы разработки качественного и чистого кода

Новиков Иванhttp://jonnynovikov.com/

@jonny

Page 3: Методы разработки качественного и чистого кода

Моя позиция может несовпадать с позициейкомпаний, в которых я

работаю

Page 4: Методы разработки качественного и чистого кода

Кто я?

Page 5: Методы разработки качественного и чистого кода

Novikov IvanCTO at & Backend engineer at Amiforus ozon.travel

http://jonnynovikov.com/

Page 6: Методы разработки качественного и чистого кода

AgendaTDD

РЕФАКТОРИНГАРХИТЕКТУРА

ПРОЦЕССЫПРИМЕРЫ НА C#

ДИАГНОЗ И ЗАКЛЮЧЕНИЕQ&A

Page 7: Методы разработки качественного и чистого кода

TDD?

Page 8: Методы разработки качественного и чистого кода

TDD...будем дальше считать академическим видом

программированияSUT, SUD, .... почему все-таки TDD - огромный

вклад в развитие инженерии в целом?

Page 9: Методы разработки качественного и чистого кода

РЕФАКТОРИНГне должен изменять семантику

должен улучшать качество

Page 10: Методы разработки качественного и чистого кода

РЕФАКТОРИНГне панацея

стоимость, необходимость

Page 11: Методы разработки качественного и чистого кода

АРХИТЕКТУРА

Page 12: Методы разработки качественного и чистого кода

Несовершенная архитектуранепредвиденные изменения

существенные изменения

Page 13: Методы разработки качественного и чистого кода

REFACTOR!непредвиденные изменения

REBUILD!существенные изменения

Page 14: Методы разработки качественного и чистого кода

РЕФАКТОРИНГ ТРЕБУЕТАНАЛИЗАРефактори СВОЁ!

хлам от рефакторинга останется хламом (GIGO)никакое его количество не спасет дефектную

архитектуру

Page 15: Методы разработки качественного и чистого кода

RebuildУдачи!

Page 16: Методы разработки качественного и чистого кода

ПРОЦЕССЫ

Page 17: Методы разработки качественного и чистого кода

РАЗРАБОТКА, управляемаятестами

полноценный метод разработки ПО

Page 18: Методы разработки качественного и чистого кода

Test First Developmentcreate test

modify: code the simple thingrefactor

Page 19: Методы разработки качественного и чистого кода

"Make it work. Make it right. Make itfast."

Kent Beck

Page 20: Методы разработки качественного и чистого кода

Test Driven Developmentcreate test

check test is failedmodify: code the simple thing

ensure test is passedcontinuous refactor (unify)

Page 21: Методы разработки качественного и чистого кода

"Лондонская школа TDD"моки как средство унификации проектирования

ПО

Page 22: Методы разработки качественного и чистого кода

Реальность

Page 23: Методы разработки качественного и чистого кода

Code example

Page 24: Методы разработки качественного и чистого кода

О спецификациях(MSpec)

Page 25: Методы разработки качественного и чистого кода

Основные принципыПростота (KISS)"Чистый" код

Не делай то, что сейчас не используешь (YAGNI)

Page 26: Методы разработки качественного и чистого кода

Attention

Page 27: Методы разработки качественного и чистого кода

Будьте скептикомРазработку, управляемую тестами стоит

попробоватьМоки необходимо использовать

ТОЛЬКО там, где они действительно нужныи еще...

Page 28: Методы разработки качественного и чистого кода

Где меня обманулитесты - это не все, что нужно для спецификации

ПОтест более специфичен, чем user story

поиски общих правил, нет рецепта генерацииспецификации по тестам

Page 29: Методы разработки качественного и чистого кода

Почему все-таки класснаяштука?

каждый новый код должен сопровождатьсятестами

экстремальный вариант хороший способзаставить себя сделать это

Page 30: Методы разработки качественного и чистого кода

Немного кода

Page 31: Методы разработки качественного и чистого кода

Почему многиеВООБЩЕ не пишут

тесты?- "Зачем проверять только состояния?"

- "Это отнимет всё время"- "Их невозможно поддерживать"

Page 32: Методы разработки качественного и чистого кода

Почему ПИШУТ и дажеразрабатывают через

тесты?У них есть рецепт, который другие не знают?

Page 33: Методы разработки качественного и чистого кода

Проблемы заглушек

Page 34: Методы разработки качественного и чистого кода

Isolation FrameworkИспользуя NSubstitute

https://github.com/nsubstitute/NSubstituteкод с предыдущего слайда превращается в

Page 35: Методы разработки качественного и чистого кода

Mocking FrameworkMoq https://github.com/Moq/moq4

Page 36: Методы разработки качественного и чистого кода

С блэкджеком и...девочками

IoC + Nancy https://github.com/NancyFx/Nancy

Page 37: Методы разработки качественного и чистого кода

О необходимоститестирования

Page 38: Методы разработки качественного и чистого кода

Тесты - тоже искусствоSelenium WebDriver http://seleniumhq.org

Page 39: Методы разработки качественного и чистого кода

Вырастающаясложность

Page 40: Методы разработки качественного и чистого кода

Поддержка

Page 41: Методы разработки качественного и чистого кода

Проектирование ипрограммирование -

виды человеческой деятельности;стоит об этом забыть – и все пропало.

Бьярн Страуструп, 1991

Page 42: Методы разработки качественного и чистого кода

Что начать читать завтра?Ironies of Automation, 1983

Test-Driven development: By example (Kent Beck,2003)

Исскуство автономного тестирования (РойОшервуд):

или русская english&

Что посмотреть вместосериала?

Norwegian Developers Conference (NDC)

http://j.mp/ndcconferences

Page 43: Методы разработки качественного и чистого кода

Q&AПрезентация тут: http://j.mp/quality-evolve