Рубріки: Теория

Три простых способа заметно улучшить ваш код на Python

Ігор Грегорченко

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

Итак, вот что я начал делать нового:

  • Прислушивался к советам линтера.
  • Использовал прекоммит.
  • Реализовал подсказку типов.

Я знаю, что некоторые читатели знакомы с этими тремя техниками — хотя в начале 2021 года я не был знаком с ними, и я хотел поделиться с теми, кто начал этот год в похожем положении новичка.

SonarLint

SonarLint – мой любимый линтер. Это бесплатное расширение не только обнаружило проблемы в моем коде, но и предоставило документацию и примеры по каждой выявленной проблеме. Поскольку оно интегрируется в VS Code и PyCharm, было очень легко принять решение включить его в мой рабочий процесс для повышения качества кода. Благодаря этому я узнал, когда следует использовать оператор else после цикла for или while, использовать элементы управления итерациями в блоках try/except, а также потратил много времени на уменьшение сложности и увеличение наглядности моих методов.

Документация и расширение здесь: https://www.sonarlint.org/

Pre-commit

Этот инструмент позволяет стандартизировать проверку качества кода перед тем, как сохранить и поделиться своими изменениями. Он невероятно полезен и предоставляет метод для выполнения статического анализа кода. С помощью простой конфигурации я могу использовать black для форматирования кода, isort для сортировки импортов, mypy для проверки на проблемы с типизацией (подробнее об этом чуть позже), flake8 для поиска стилистических ошибок и нарушений конвенций кода, и многие другие проверки.

Документация об этом: https://pre-commit.com/

Пример конфигурации:

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v2.3.0
  hooks:
  - id: check-yaml
  - id: end-of-file-fixer
  - id: trailing-whitespace
- repo: https://github.com/psf/black
  rev: 19.3b0
  hooks:
  - id: black
- repo: https://github.com/pycqa/isort
  rev: 5.10.1
  hooks:
  - id: isort
    name: isort (python)
- repo: https://github.com/pre-commit/mirrors-mypy
  rev: 'v0.910-1'
  hooks:
  - id: mypy
- repo: https://github.com/pycqa/flake8
  rev: '4.0.1'
  hooks:
  - id: flake8

Я с нетерпением жду возможности узнать больше об этом и, возможно, поделиться своими собственными pre-commit hooks.

Горячая подсказка типа

Это работает рука об руку с pre-commit. После внедрения проверок mypy в pre-commit я потратил время на доработку существующего кода для использования подсказок типов, чтобы mypy мог использовать этот контекст и искать возможные ошибки. Документация по типизации в Python превосходна и помогла определить, как и когда использовать различные классы типизации.

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

Быстрый пример ниже:

from typing import List, TypedDict
class Weather(TypedDict):
    high_temp: float
    low_temp: float
    summary: str
forecast: List[Weather] = [{
    "high_temp": 40.3,
    "low_temp": 34.7,
    "summary": "Sunny"
}]

Что дальше?

Я надеюсь в этом году узнать больше о новых темах, хотя я уверен, что в следующем году я буду писать о том, о чем сейчас не знаю.

Мои планы таковы:

  • Изучить внедрение методов функционального программирования и сокращение использования ненужных побочных эффектов.
  • Погрузиться в JavaScript и узнать больше о фронт-энде и асинхронной разработке.
  • Развитие навыков работы с инструментами DevOps, такими как ansible, terraform и packer.

А какие техники вы переняли в этом году? Что вы надеетесь развить в этом году? Пишите тут в комментах, или в наших социальных сетях.

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024