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

Три простых способа заметно улучшить ваш код на 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.

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

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

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023