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○ Память (переменные, замыкания)○ ...
Признаки качественного кода
★ Читаемость★ Производительность★ Соответствие требованиям
Признаки качественного кода
★ Читаемость★ Производительность★ Соответствие требованиям
○ Процесс разработки○ Непрерывная интеграция
Процесс разработки
★ TDDTODO list (navigation map)Test firstAssert firstFail first
Процесс разработки
★ TDD★ Парное программирование
Процесс разработки
★ TDD★ Парное программирование★ Baby steps
Непрерывная интеграция
Инструменты
★ TDD○ mocha + chai + sinonjs○ jasmine○ mutant, mutandis○ protractor○ cucumber-js
mocha + chai + sinonjs
mocha + chai + sinonjs
Покрытие кода тестами
Мутационное тестирование
Реальный код
https://github.com/magnusstubman/mutant
Мутанты
Мутационное тестирование
Мутационное тестирование
➢ https://github.com/magnusstubman/mutant➢ https://github.com/saltlab/mutandis/➢ http://pitest.org/ (Java - not JavaScript)
Инструменты
★ TDD★ Стили, стандарты, дубликаты, анализ
кода○ jshint, jslint○ plato○ codepainter, esprima, jscpd
Esprima + Escodegen
Инструменты
★ TDD★ Документация
○ jsdoc○ docco○ doxx
Инструменты
★ 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
Вопросы?