Переименование при импорте
Опубликовано 18 March 2019 в Python
В Python есть замечательная возможность присваивать свои имена при импорте (import foo.bar.baz as fbb
). Так можно легко избежать конфликтов имен при импорте и повысить читаемость кода, если требуется. Но этой же возможностью можно легко превратить хороший код в абсолютно нечитаемый. В последнее время я несколько раз встречался с этим: попадались мне, в основном, странные сокращения и непонятные имена для алиасов.
Продемонстрирую проблему на примере сокращений. Хороший пример придумать с ними проще.
from facebook import utils as fbu
from twitter import units as tu
Отлично. Конфликта имен избежали. Но что такое tu
? Если встретить такое имя в коде, то придется совершать дополнительные действия, что бы понять что автор имел ввиду. гораздо лучше если будет что-то вроде такого:
from facebook import utils as facebook_utils
from twitter import units as twitter_utils
Уж теперь-то никаких вопросов в коде не возникнет. Конечно имена немного длиннее, но кто сейчас экономит байтики? Я бы использовал эту формулу импорта в подобном случае даже, если импортируется одна из библиотек с утилитами: читаемость кода будет выше.
Оказалось, что обосновать читаемость кода не так-то просто обосновать. Обычно на претензии к сокращениям отвечают, что можно в импорте посмотреть, что это значит и откуда прилетело. Безусловно можно. В IDE вообще никаких проблем с этим нет: ткнул в нужное место, перешел к определению, почитал, вернулся обратно.
Но большая часть чтений кода происходит в PR на github или подобной системе. Читается маленький дифф, где может просто не быть нужного импорта. Приходится “раскручивать” файл, что бы добраться до нужной строчки. Никакой помощи в навигации по коду тут нет. Остается только экономить время читающего используя осмысленные переименования.
Каково ваше мнение? Стоит вообще переживать по этому поводу и отправлять PR на доработку в подобных случаях?
Возник вопрос? Мне всегда можно написать в Twitter: avkorablev