From 29b8be0b348b6e1580fc5fdfa86cd8efaa8cbd1a Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Mon, 25 Sep 2017 23:50:13 +0300 Subject: [PATCH] =?utf8?q?=D0=92=D1=8B=D0=B2=D0=BE=D0=B4=D1=8B=20=D0=BD?= =?utf8?q?=D0=B0=20=D0=B1=D1=83=D0=B4=D1=83=D1=89=D0=B5=D0=B5=20=D0=BF?= =?utf8?q?=D0=BE=D1=81=D0=BB=D0=B5=20=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0?= =?utf8?q?=D0=BD=D0=B8=D1=8F=20=D1=82=D1=8B=D1=81=D1=8F=D1=87=20=D1=81?= =?utf8?q?=D1=82=D1=80=D0=BE=D0=BA=20Python=20=D0=BA=D0=BE=D0=B4=D0=B0=20?= =?utf8?q?=D0=BD=D0=B0=20=D0=B4=D0=BD=D1=8F=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Не выходил я толком из дома уже неделю и писал писал кучу 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 работает. -- 2.48.1