Как поддерживать большие проекты Python во время разработки и выпуска - PullRequest
0 голосов
/ 28 июня 2018

Прежде всего, я разработчик на C ++ и столкнулся с новыми проблемами. Я должен создать архитектуру и рабочий процесс для большого проекта на Python.

Я должен убедиться, что разработчики не нарушают код при выполнении своей работы, и я должен знать, что при выпуске мы не нарушали совместимость API.

Я знаю и у меня много хороших практик, инструментов для разработки на C ++, но я совершенно заблудился в мире питонов.

Я действительно считаю, что не должен использовать парадигмы C ++ для разработки на Python, поскольку она определенно не разработана таким же образом.

В C ++ у нас есть компилятор (предупреждение / ошибка), который помогает нам найти некоторые проблемы. Я не говорю, что после компиляции он работает, но, по крайней мере, у нас есть API-совместимость. У нас также есть покрытие кода, статический анализ, несколько других способов, которые помогают нам исправить / узнать, что наш код имеет некоторое качество. Мы используем объектно-ориентированную архитектуру и обзор кода. Оба работают с C ++ и python. Мы также используем модульные тесты (gtest на C ++, pytest для python). Но все они нуждаются в человеческих знаниях.

Существуют ли какие-либо инструменты, помогающие нам узнать, что мы предоставляем качественную базу кода? Насколько большой проект, как Numpy, Scipy, TensorFlow, может быть уверен, что их релизы хороши?

Есть несколько линтеров (pylinter), стиль кодирования PEP8, я также взглянул на компиляцию на python, но без особого успеха, но я действительно не знаю, что мне делать.

Если вы знаете некоторые хорошие способы работы и полезные инструменты, я весь в ушах.

Спасибо вам всем,

1 Ответ

0 голосов
/ 29 июня 2018

Я бы сказал, что на самом деле вы должны иметь возможность перенести практически все устоявшиеся концепции поддержания стандартов качества кода, с которыми вы уже знакомы, с C ++ на Python, поскольку они в значительной степени не зависят от языка.

Очевидно, что обзоры кода и модульное тестирование в некоторой степени. Python прекрасно поддерживает модульное тестирование.

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

С точки зрения обучения написанию «питонического» кода Python, т.е. е. код, который должен получить одобрение опытного и опытного разработчика Python, лучший из известных мне ресурсов - Руководство автостопом по Python . И в конце концов, написание хорошего кода - вот что действительно важно, не так ли?

Но для всего этого нужны человеческие знания.

Точно. Инструменты могут поддерживать хорошие рабочие процессы, которые позволяют нам создавать качественный код, но, в конце концов, мы, люди, должны его писать, не так ли? По крайней мере, пока ...

...