Ну, я часто пишу возвращенные цепочечные условия, такие как:
return a == b
&& c == d
&& !d
&& foo(e, f)
;
или…
return a == b
|| c == d
|| (!d && foo(e,f))
;
Я думаю, идея ясна.
Однако, это довольно при возврате чего-либо, а не в операторе if или как вы делаете. На мой взгляд, было бы неправильно создавать функцию, просто возвращающую довольно большую sh, если бы вы никогда не использовали эту функцию снова. Тем не менее, это может быть более читабельным ...