javascript. code quality

37
JavaScript. Качество кода. Андрей Кучеренко, EPAM Systems

Upload: epam

Post on 16-Jul-2015

466 views

Category:

Software


1 download

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○ Память (переменные, замыкания)○ ...

Признаки качественного кода

★ Читаемость★ Производительность★ Соответствие требованиям

Признаки качественного кода

★ Читаемость★ Производительность★ Соответствие требованиям

○ Процесс разработки○ Непрерывная интеграция

Процесс разработки

★ 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

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

Вопросы?