[О блоге] [наверх] [пред] [2017-09-25 23:50:13+03:00] [29b8be0b348b6e1580fc5fdfa86cd8efaa8cbd1a]
Темы: [python]

Выводы на будущее после написания тысяч строк Python кода на днях

Не выходил я толком из дома уже неделю и писал писал кучу Python кода.
На работе мы конечно давно исповедуем некоторые мантры, но в очередной
раз убедился в их пользе и для меня уже просто неоспоримом преимуществе:

* рефакторить только после покрытия тестами. После хорошего покрытия,
  типа 100%. Лучше сначала дописать как есть, покрыв тестами, а потом
  рефакторить
* использовать coverage. Если pylint/flake8/mypy/whatever просто
  помогают чуть сократить время нахождения недочётов, если тесты покажут
  только те проблемы, что были оформлены явно человеком в этих тестах,
  как он их видит и представляет, то coverage это über вещь,
  показывающая то, что человек которому этот coverage пальцем тычет в
  строчки кода, он всё-равно не поверит что они не покрыты, ведь вот же
  прям отдельно для этих случаев специально написан же тест. Что на
  работе, что вот в личных проектах -- coverage показывает то, чего
  люди, команда людей, в упор не видит. Потрясающая по своей простоте и
  эффективности повышения качества кода штука

Отдельно для себя ещё намотал на ус что всякие составные if-ы (if condA
or condB) имеет смысл писать отдельными if-ами, чтобы сделать из этого
два ветвления, два statement. Coverage не раз мне показал что одна из
частей этого условия никогда не покрывается, а я ведь был уверен, так
уверен.

Ну и quickfix-подход, а именно Hypothesis библиотека
(http://hypothesis.readthedocs.io/), очень и очень здорово помогает.
Требуется конечно порог вхождения чтобы научиться писать тесты под неё.
Часто приходится возиться с оптимизацией стратегий, так как могут быть
очень медленными, но оно всё стоит того. Мало того что оно просто
помогает писать меньше тестов, так ещё и как небольшой fuzzer работает.

    [оставить комментарий]