[Moscow.pm] Как бороться с "чужим" кодом?

Ilya Chesnokov chesnokov.ilya на gmail.com
Чт Мар 13 08:53:48 PDT 2014


13 марта 2014 г., 19:23 пользователь Анатолий Гришаев
<0body0 на rambler.ru> написал:
>
> Как согласуется потестить руками и автоматическое тестирование?
> Не получиться, что после "потестить" руками нужно будет править и код и
> тесты к нему?
> Может стоит написать тесты ПОСЛЕ сравнения "руками" старого и нового
> варианта?

Вы как-то все усложняете :) Потестить руками и потестить автоматически
- оба этих действия нацелены на достижение одного результата -
удостовериться, что код работает так, как должен. По сути
автоматизированные тесты - это выраженные на языке программирования
действия, которые вы бы выполнили руками для достижения этой же цели.

Почему рекомендуется сначала написать автотесты (или хотя бы составить
план тестирования), прежде чем менять код - чтобы в процессе
редактирования кода вы всегда могли их запустить (выполнить все пункты
плана) и удостовериться, что код работает как должно. А кроме того,
любой другой программист сможет запустить эти тесты и удостовериться,
что после *его* изменений все работает как должно. Если автотесты
написаны правильно, то их результат будет идентичен результату,
полученному при ручном тестировании. Если же после сравнения "руками"
что-то прошло не так, то скорее всего автотесты написаны неправильно.

> Возможно удовлетворить желание, чтобы новый код выглядел для меня и других
> "восхитительным и красивым"?

Для этого обычно проводят code review. Плюс используют некие стандарты
кодирования, которые определяют, где лучше поставить пробел или
запятую и какой длины делать строки кода (хотя Андрей сейчас скажет,
что все это ерунда и мешает разработке :))

> Единственный минус "старого доброго" кода он недостаточно структурирован --- это практически простыня кода.

Разбейте его на функциональные части, выделите каждую такую часть в
отдельную функцию, напишите документацию (или хотя бы комментарии) к
функции... Сделали? Поздравляю, вы освоили метод рефакторинга
"выделение подпрограммы" :-)

-- 
Best regards,
Ilya Chesnokov


Подробная информация о списке рассылки Moscow-pm