Насчёт "переделывать код не надо" - это уже неправда. Пример взят из реального кода компилятора Fox из A2, в который я вношу изменения, стараясь ничего не сломать. Откуда возьмутся эти предикаты, если их не было? Их надо написать и заменить выражения на эти предикаты (при этом есть риск внести ошибку в компилятор, а это достаточно страшно). Это и есть "переделывать код". Да и то, как Вы назвали Ваши предикаты, говорит о том, что Вы не прочитали условия. Надо было бы назвать не "СтатическийМассивЛи?", а какой-нибудь "СтатическийМассивНенулевойДлиныЛи?" А на самом деле и я не знаю, о чём эти условия, я просто их нашёл, как пример заковыристых условий. Неизвестно из данного фрагмента, о чём речь. Т.е. если вот так начать слёту переделывать, может стать ещё хуже, чем было. Потому что имена, вводящие в заблуждение - это ещё хуже, чем сложно выписанные условия. И наконец, я этот вариант перечислил в пункте "рефакторинг", хотя я там написал другой вариант рефакторинга, но понятно, что внесение фрагмента кода в процедуру - это тоже рефакторинг.

Вот сегодня опять попался пример, на этот раз в Питоне, а там и с отступами строго, и внутристрочных комментариев нет. Условие имеет вид:

## Код:
```
if not а.булевоПоле and not а.другоеБулевоПоле and (поле.вызовФункции('литерал') or поле == 'литерал'):
```


Так-то я его осилил, но заметил, что он приближается к "сложному", хотя и попроще предыдущего.

Его можно было бы написать так, наверное:

## Код:
```
if ( #AND
    not а.булевоПоле 
    and not а.другоеБулевоПоле 
    and ( #OR
              поле.вызовФункции('литерал') or поле == 'литерал' 
           )): #OR AND
```

Но это уж слишком жирно. Нужно искать золотую середину. Я, впрочем, даже пока не знаю, правильный ли это код на Питоне или нет.