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

Preview:

Citation preview

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

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

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

@jonny

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

работаю

Кто я?

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

Recommended