/ in Russian, на русском

О вреде многострочных списковых выражений (list comprehensions)

Multiline list comprehensions considered harmful.

У всех программистов с опытом в голове формируется оптимизированный алгоритм чтения кода. Мы знаем, что почти всегда поток управления течёт сверху вниз, слева направо.

Мозг ещё более расслабляется если мы читаем код который написан с более строгими правилами, с однократным присваиванием переменных (single assignment), например на Эрланге.

Код течёт водопадом сверху вниз, и мысль следует туда же.

Мой обезьяний мозг уже давно научился быстро сканировать начала строк, иногда левую часть присваивания, быстро вникая что от чего зависит в этом куске кода.

Но иногда встречается такой код:

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

Это очень напоминает промах кэша — расположил в неправильном порядке свои данные и получил тупняк. Здесь же расположил в неправильном порядке зависимости в коде, увеличил сложность его разбора глазами глазами.

Лупить ржавой кочергой по заднице тех кто пишет многострочные списковые выражения в коде.

Откомментировать заметку в Фейсбуке или Вконтакте.