Обновить

Комментарии 11

PEP 823 (?. и ?[] синтаксис) очень классный, давно не хватало подобного

Согласен, очень много кода пишется просто из-за проверки на None :(

Кстати, интересно под каким предлогом ++ так и не добавили?

++ преполагает сложную атомарную семантику, которой нет в питоне :)

А как же Simple is better than complex и Readability counts? Кому как, но по моему (сугубо субъективному) мнению,

def get_customer_name(data: Data) -> str | None:
    return data.customer?.user?.name.lower()

воспринимается тяжелее, чем

def get_customer_name(data: Data) -> str | None:
    customer = data.customer
    if customer is not None:
        user = customer.user
        if user is not None:
            return user.name.lower()
    return None

Да, не однострочник (надеюсь не обижу адептов Perl-а), но когнитивная сложность (кстати, спасибо за доклад) у второго варианта ниже, тк он более "вытянут" и состоит из примитивных действий.

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

целостную картину чего? каждое условие - отдельный контекст с своими действиями

Моя позиция такая: длинный код надо читать и понимать. Смотреть, что он реально делает. Нет ли там лога где-то? Не спрятан ли side-effect? А одна строка сразу входит в голову: вот, мы получаем атрибут такой-то.

Обсуждали это в чате канала. Однако здесь повторю
Есть исследование на это счет. Спец.символы (& || ?? && ; =>) а так же много скобок у многих людей сильно сбивают внимание. В когнитивной психологии это называют высокой синтаксической нагрузкой или синтаксическим шумом. В сознании мы не читаем код посимвольно, мы читаем его блоками или словами. Символы вроде => или ?? разрывают плавность текста, заставляя взгляд спотыкаться. В примере выше голова от такой конструкции customer?.user?.name.lower() конечно не устанет, однако важно чтобы это не стало трендом в python.

В любом случае благодарю сообщество и Вас sobolevn за публикацию моего скромного opensource Asynctoolspy.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации