In cases of similarly convoluted conditionals, I usually go the route of creating self-documenting variables to store the value. I know this may trigger some Monks' "flag variables are evil" detector, but I think they're justified in [certain] cases like this:
my $foo_is_ready = (foo1 && foo2) || (foo3 && bar1 && baz1); if ($foo_is_ready) { ... }
I think it makes the actual if statement read a lot cleaner, and it gives future maintenance programmers an idea of what the condition actually is. You can even take it a step further and break up the condition into subconditions:
my $first_foo = foo1 && foo2; my $second_foo = foo3 && bar1 && baz1; my $foo_is_ready = $first_foo || $second_foo; if ($foo_is_ready) { ... }
Of course you run the risk of going overboard here, but I think the technique can be used to good effect.
Update: clarified to avoid confusion over example vs general idea.
In reply to Re: bloated 'if' formatting
by revdiablo
in thread bloated 'if' formatting
by eff_i_g
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |