Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

(jeffa) Re: Logical expression style

by jeffa (Bishop)
on Jul 12, 2002 at 17:27 UTC ( [id://181350]=note: print w/replies, xml ) Need Help??


in reply to Logical expression style

I opt for a style such as:
if ( A && # condition A B && # condition B C # condition C ) { # do stuff }
However, i really try to avoid these situations by relying on hashes instead. In fact, i have been getting into the habit of using this style for just about everything i do in Perl. It's a derivative of how i code a sub:
sub foo { # blah blah blah }
Defining a hash:
my %hash = ( foo => 'bar', baz => 'qux', );
Defining an array with long elements:
my @array = qw( foofoofoofoofoofoofoofoofoofoofoofoo barbarbarbarbarbarbarbarbarbarbarbar );
A subroutine call:
print checkbox_group( -name => 'words', -values => [qw(eenie meenie minie moe)], -defaults => [qw(eenie minie)], );
The idea is to have each 'thing' on it's own line (with trailing commas where applicable), and line up the closing bracket or paren directly under what opened it.

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)

Replies are listed 'Best First'.
Re^2: Logical expression style
by Aristotle (Chancellor) on Jul 14, 2002 at 20:02 UTC
    Same here. I regard parens and curly braces as pretty much the same thing. If the inner block is short, the whole thing goes on the same line. Otherwise, the opening (paren|curly) is at the end of the first line, the block inside it indented on the following lines, and finally the closing \1 follows outdented on the next line. I place closing and opening parens/curlies back to back on the same line, but do not cuddle else's.
    if( $very_long_expression_written_out_here && $another_long_expression_in_this_line && $yet_more_following_here ) { do_whatever(); } else { do_something_else(); }
    These are not absolutely inflexible rules though; if large and small blocks intermingle, I break one or another rule in order for the parts to stand out from each other. The first and foremost rule is that I should have no trouble picking up the exact structure of the source while scrolling, even when the text is moving too fast to actually read it. That augments both the legibility of the code as well as my efficiency, because I can navigate large bodies of code purely visually.

    Makeshifts last the longest.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://181350]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2024-04-20 07:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found