java script. code quality. (2)

Post on 16-Jul-2015

329 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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

Вопросы?

top related