java script. code quality. (2)
TRANSCRIPT
JavaScript. Качество
кода.
Андрей Кучеренко, EPAM Systems
Признаки качественного кода
★ Читаемость
JavaScript Patterns, Stoyan Stefanov
“...the few man-hours spent writing the code
initially end up in man-weeks spent reading
it...”
Признаки качественного кода
★ Читаемость○ Стиль написания кода
○ Документация
○ Стандарты кодирования
Признаки качественного кода
★ Читаемость
★ Производительность
Признаки качественного кода
★ Читаемость
★ Производительность○ DOM
○ Память (переменные, замыкания)
○ ...
Признаки качественного кода
★ Читаемость
★ Производительность
★ Соответствие требованиям
Признаки качественного кода
★ Читаемость
★ Производительность
★ Соответствие требованиям○ Процесс разработки
○ Непрерывная интеграция
Процесс разработки
★ TDD
TODO list (navigation map)
Test first
Assert first
Fail first
Процесс разработки
★ TDD
★ Парное программирование
Процесс разработки
★ TDD
★ Парное программирование
★ Baby steps
Непрерывная интеграция
Инструменты
★ TDD○ mocha + chai + sinonjs
○ jasmine
○ mutant, mutandis
○ protractor
○ cucumber-js
mocha + chai + sinonjs
mocha + chai + sinonjs
jasmine
Покрытие кода тестами
Мутационное тестирование
Реальный
кодhttps://github.com/magnusstubman/mutant
Мутанты
Мутационное тестирование
Мутационное тестирование
➢https://github.com/magnusstubman/mutant
➢https://github.com/saltlab/mutandis/
➢http://pitest.org/ (Java - not JavaScript)
protractor
cucumber-js
cucumber-js
Инструменты
★ TDD
★ Стили, стандарты, дубликаты, анализ
кода○ jshint, jslint
○ plato
○ codepainter, esprima, jscpd
Plato
Plato
Plato
codepainter
Esprima
Esprima + Escodegen
Инструменты
★ TDD
★ Документация○ jsdoc
○ docco
○ doxx
code docs smells
Инструменты
★ TDD
★ Документация
★ Производительность○ chrome-developer-tools
○ firebug
○ spy-js
Чеклист
❏ Соответствие требованиям❏ TDD
❏ TODO list (navigation map)
❏ Test first
❏ Assert first
❏ Fail first
❏ E2e тесты
❏ Поддержка кода❏ Парное программирование, ревью кода
❏ Ошибки и проблемы в коде (plato, jshint, jslint)
❏ Стиль написания и стандарты кода (codepainter, esprima)
❏ Производительность
twitter:@a_kucherenko, github: kucherenko
Вопросы?