Русский
Русский
English
Статистика
Реклама

Перевод 3 полезных Python-инструмента для упрощения работы с кодом


Любой разработчик использует те или иные вспомогательные инструменты. Какие-то из них позволяют ускорить процесс, какие-то избавиться от ошибок, сделать код более понятным. Такие инструменты есть практически в любой сфере разработки.

Престон Бадир (Preston Badeer), Python-программист, поделился набором расширений которые, по его мнению, значительно упрощают и ускоряют кодинг. За 5 лет работы он перепробовал множество инструментов и выделил три наиболее полезных.

Kite: быстрый доступ к документации и автозаполнение на основе ИИ


У большинства IDE есть встроенная функция автозаполнения. Примерно так выглядит процесс работы с ними.


Эти инструменты используют внутреннюю документацию для автоматической подстановки параметров и имен функций. Но что если бы существовал инструмент, который способен помогать не только с именами функций, но и с часто используемыми кусками кода? А еще анализировал данные репозиториев GitHub и предлагал нужные подсказки. Такой инструмент есть. Kite умеет многое, но большинство важных функций можно разделить на три группы.

Smart-подсказки на основе ИИ


Kite изучает кодовую базу, запоминает название переменных, которые часто использует разработчик, имена параметров из интернета и документацию, чтобы выдавать контекстные рекомендации, например:


В примере показано, как Kite предсказывает какие переменные вы будете использовать в зависимости от контекста кода. Вот еще пример работы подсказок:


Мы потратили большое количество времени на семантическую индексацию всего кода на GitHub, построение статистических выводов и обширных моделей, которые помогают использовать полученную информацию, комментирует продукт CEO Kite Адам Смит.

Улучшенная работа с документацией


Если коллеги вам никогда не отправляли в рабочем чате RTFM, значит, вы разработчик, который не допускает ошибок. Но, в любом случае, вы должны сначала ознакомиться с документацией, а затем уже спрашивать коллег о какой-то проблеме или искать ответы на вопросы на Stack Overflow. Чтение документации важный этап создания программного кода. Более удобным его сделает Kite Copilot, который в режиме реального времени показывает описание подсвеченных курсором объектов и функций.


Ваш код остается с вами на локальном ПК


Kite создан для локальной работы и не отправляет код в облако. Скорость работы подсказок достаточно высокая. Это важно для тех, у кого медленный интернет или работа связана с закрытым/проприетарным кодом.

Я работаю с этим инструментом несколько лет, и он становится только лучше. Опробовать его можно прямо сейчас.

Улучшаем код с Mypy


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

# These two variable types are declared the exact same way# Python figures out the data type on it's own, dynamically# stringvar_name = "string here"# integervar_name = 1234

А вот пример языка со статической типизацией, где каждой переменной задается конкретный тип данных, чего необходимо придерживаться в логике:

# Many languages require the data type to be declared too# stringstr var_name = "string here"# integerint var_name = 1234

В динамическом подходе есть и минусы:

  • К концу процесса разработки повышается риск столкнуться с ошибками, так что придется переписывать какие-то части кода.
  • Из-за постоянного вычисления типов код работает медленнее.
  • Из-за динамической типизации код становится небезопасным, так как у функции на входе и выходе могут быть разные типы данных у одной и той же переменной.
  • Читать динамический код сложнее, поскольку другой разработчик не может быть на 100% уверен в том, что объявленная ранее переменная не изменит тип.

Бесплатный инструмент Mypy внедряет статическую типизацию в код. Он позволяет находить ошибки несоответствия типов в коде. Если обнаружено несоответствие значение переменной присвоенному типу, выводится ошибка.

# Declaring a function using normal dynamic typing, without mypydef iter_primes():   # code here# Declaring the same function with mypy static typingfrom typing import Iteratordef iter_primes() -> Iterator[int]:   # code here

Это самый простой пример из целого списка. Если вам нужно больше информации, переходите по ссылке. Кроме того, в документации Mypy есть обширный FAQ.

Быстрый поиск ошибок и написание простых функций с SonarLint


У большинства IDE есть линтеры, статические анализаторы ошибок. Линтер еще до запуска кода может найти ошибку. Это считается статистическим анализом кода.


Но есть еще и динамический анализ, который в фоновом режиме запускает/компилирует код, проверяя правильность его работы. И если что-то идет не так, сообщает о возможной ошибке. Как раз по такому принципу работает бесплатный проект SonarLint.

Закомментированный или неиспользуемый код

Каюсь, бывает, что я оставляю операторы вывода, закомментированный код и неиспользуемые функции по всей кодовой базе. SonarLint предупреждает об этих проблемах, показывая, где что находится. Без SonarLint поиск проблем и отладка может занять многие часы.



Проблемы с безопасностью

У SonarLint есть большая обновляемая база данных с перечнем уязвимостей, которая позволяет плагину вовремя предупреждать разработчика о найденных в коде проблемах.

Читаемость кода

SonarLint предупреждает о чрезмерном усложнении кода, объясняя суть проблемы. Это может быть, например, слишком большая вложенность операторов if.

В качестве вывода


Небольшое резюме, чтобы не забыть описанные в статье инструменты:


А какие полезные инструменты для работы с Python используете вы?

Источник: habr.com
К списку статей
Опубликовано: 02.09.2020 16:16:09
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании selectel

Python

Лайфхаки для гиков

Программирование

Советы

Лайфхаки

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru