When I'm doing code review for hire, I do not permit using testthing && truething || falsething in production code unless there's also a big comment in the margin that says literally:my $key = $institution && ($valid_institution{lc($institution)} || "other") || "unaffiliated";
If you don't want to add a big friggin' comment like that, then change the very dangerous broken and-or construct to the entirely safe testthing ? truething : falsething, as in:## I'm promising that the true branch here can NEVER EVER EVER ## return a false value, which would have caused the ## false branch to be erroneously executed. If you're ## updating this code, please continue to maintain ## this precondition, which I have placed precariously ## and needlessly in this code. Have a nice day.
my $key = $institution ? ($valid_institution{lc($institution)} || "other") : "unaffiliated";
-- Randal L. Schwartz, Perl hacker
In reply to •Please don't use foo && truething || falsething
by merlyn
in thread an easier way with grep, map, and/or sort?
by aufrank
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |