Отвечая на ваш комментарий:
Когда у меня есть какие-то предупреждения, я хотел бы знать немного больше, чем «слишком много« чего-то »», «недопустимое« что-то »» и т. д. Если мой код работает нормально, я предполагаю, что эти предупреждения являются своего рода направляющими линиями и могут быть изучены с контекстом. Для синтаксиса я ссылаюсь на PEP8, но для других предупреждений? ОК, все предупреждения не имеют PEP. Почему для максимальной ветки установлено значение 15, для операторов установлено значение 50, для переменных установлено значение 15 и т. д.?
Они в основном основаны на «лучших практиках» - «золотых правилах», которые в основном получены из опыта, но иногда могут немного ошибаться в произвольной стороне - и на самом деле числа, которые вы упоминаете, действительно произвольны, но вы должны установить произвольный предел здесь , по крайней мере пока не вырастет pylint и IA.
Если Python соглашается запустить код, в чем смысл…?
Потому что код нужно поддерживать — обычно вы тратите на поддержку кода (исправление ошибок, улучшение производительности и добавление функций) на сотни больше времени, чем на написание первой версии — и небольшие, хорошо развязанные, простые функции, выполняющие одну единственную задачу, легче читать и понимать. , рассуждайте и тестируйте, чем слишком длинные функции, выполняющие три разные задачи одновременно и реализованные с глубоко вложенными ветвями и множеством побочных эффектов.
Теперь, как я уже упоминал, числа, которые вы упоминаете, действительно произвольны и могут подходить или не подходить для данной части вашего кода. Некоторые функции сложны по своей сути и требуют более сложного кода, и вам потребуется как опыт программирования, так и достаточно хорошее знание проблемы, чтобы оценить качество вашего кода.
Pylint может только предупреждать вас о вещах, которые могут быть запахом кода, вам решать, можно ли улучшить код или все в порядке (а затем, возможно, отключить некоторые предупреждения для данного оператора или функции). или модуль и т. д.). Также есть запахи кода, которые pylint не может обнаружить — например, функция делает слишком много разных вещей — поэтому вам все равно придется перечитывать свой код и спрашивать себя, все ли в порядке или нет. Тестируемость является хорошим индикатором здесь, если вы не можете легко протестировать функцию, то, скорее всего, она делает слишком много вещей, но здесь снова некоторые части кода (например, те, которые соединяют пользовательский интерфейс и домен) по определению труднее для модульного тестирования, поэтому здесь опять же, вы должны использовать свое собственное суждение.
person
bruno desthuilliers
schedule
13.03.2018