Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: I wrote some clever code - can the comment "defuse" it?

by dws (Chancellor)
on Jun 17, 2003 at 22:04 UTC ( #266659=note: print w/replies, xml ) Need Help??

in reply to I wrote some clever code - can the comment "defuse" it?

I have just come across the first time in a very long while that I feel a need to comment a piece of code.

I wonder how much that need gets reduced after some minor reformatting. My preference is to use the the other form of map, add parenthesis to make the splice more readable, and make the implicit argument to length explicit.

my @letter_seq = map { $curr->[STYLE] . ":" . join(',', splice(@letter, 0, length $_)) } join('', @property{@letter}) =~ s/\(G|D+|L+)/g;
To my eye, that makes the intent a bit clearer.

Then, when I look at what needs commenting, I'm drawn to two things: First, that @letter_seq doesn't contain the same thing as @letter (which I found misleading at first read). Next, the final join. The latter issue can be clarified by a using a carefully named temporary variable.

my $flattened_properties = join('', @property{@letter}); my @letter_seq = map { $curr->[STYLE] . ":" . join('', splice(@letter, 0, length $_)) } $flattened_properties =~ /\G(X|D+|L+)/g;
I find this more readable (YMMV), but still wonder if the algorithm is what you really intend. The properties you're extracting from the collapsed property string don't correspond with the start of the substring of @letter that you're extracting. That part puzzles me.

Replies are listed 'Best First'.
Re^2: I wrote some clever code - can the comment "defuse" it?
by Aristotle (Chancellor) on Jun 17, 2003 at 22:09 UTC
    I did originally have an intermediate $property_map in there.. They do correspond - remember that splice is destructive. Let me rephrase that code a bit. I think I know how to clear it up now.

    Makeshifts last the longest.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://266659]
[1nickt]: Is anyone using Method::Signatures ?
[choroba]: 10 bugs in the tracker?
[1nickt]: Yes, and recommendation against using it, in the doc for Devel::Declare, on whcih it is based.

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2017-11-24 13:17 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (349 votes). Check out past polls.