Советы Python (5 частей серии)
Диктовы Питона великолепны, и мы все любим их, но на крупных проектах мы можем легко в конечном итоге с десятками функций, как это:
Ничего по своей природе не так с функцией выше, но есть некоторые мелочи, которые могут усложнить нашу жизнь как проект растет.
Мы можем ждать значение ключа при доступе к возвращенным данным (например, набрав daily_interest_rates
вместо daily_interest_rate
). Поскольку мы имеем дело с Dict, мы только нашли эту ошибку (то есть Если мы его найдем) во время выполнения.
Или, может быть, мы могли бы начать назвать эту функцию и использовать его возвращенные объекты во многих местах. В этом случае мы не могли неоднократно возвращаться к реализации, чтобы помнить ключевые ключи Диктома, или проверить структуру должных датов.
Мы можем избавиться от этих потенциальных проблем заранее и сделать этот код намного более явным, если мы
Используйте правильные классы, а не использовать Dicts повсюду
Давай попробуем:
Примечание: ниже, я использую Dataclasses , добавлено в Python 3.7, чтобы избежать некоторой котельной __init__.
Теперь наша функция возвращает экземпляры класса, а также благодаря добавленным подсказкам типа, мы знаем точную структуру этих экземпляров.
Примечание: если вы никогда не слышали о подсказках типа, проверьте их действительно короткое введение в них:
Тип Python Hints
Виктор Сильва · 12 августа 128 · 2 мин читать
Используя любую работу Python-Aware, две проблемы, которые я описал раньше, больше нет. Из-за нового класса РасчетРесульт
в сочетании с подсказками типа, Пычарм Будет предупредить меня, если я statype имя поля:
Если я забуду структуру должных дат, типа подсказки забрали меня. Pycharm будет полагаться на них, чтобы напомнить мне, что даты являются ценностями дикты, ключи которых являются целыми числами:
Теперь я не говорю, что мы должны вообще перестать использовать Dicts. Моя точка зрения заключается в том, что для более крупных проектов, возможно, лучше представлять наши данные как правильные классы. С новыми документами Python Dataclasses мы можем сделать это в Jiffy.
В наши дни я склонен предпочесть диктовать только в таких местах, как поле РасчетResult.due_dates
Выше: когда все клавиши имеют один и тот же тип и представляют одно и то же (например, в рассрочку) и все значения имеют одинаковый тип и представляют одно и то же (например, срок действия соответствующего взноса).
Я считаю, что мой код становится более выразительным, явным и поддерживаемым, приняв эту стратегию.
Советы Python (5 частей серии)
Оригинал: “https://dev.to/victorosilva/explicit-is-better-than-implicit-avoid-dict-overuse-57k4”