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 Вопросы?

JavaScript. Code Quality.