in reply to Mutator chaining considered harmful
(Pulling this from the cb)
You know, there's only one place where I've come to think that self-chaining of mutators is a good idea, and that's in things like java's StringBuffer.append: basically, when the manipulator method is an accumulator of some sort.
So I've seen self-chaining, for example, in a C++ class that did checksums:
Or the more familiar: (again, C++)Checksum myCS; myCS.addTo(x).addTo(foo).addTo(barObject); cout << myCS;
Here "dec" and "hex" aren't manipulators in the same sense as above, quite, but the syntax is clearly very similar. Again, though, the sense is that << is acting as an accumulator, and what passes through it adds on to what was there before, instead of being a "setter" method.cout << "Value is: " << dec << myValue << " (hex: " << hex << myValue +<< ")";
So getting back to Perl, this is in my opinion a perfectly respectable interface for a file-parsing library:
In this case, addRecType, while changing the state of $Ifile_format, is adding on new potential record types, and not setting some distinct value.my $Ifile_format = new What::Ever::Format(); $Ifile_format->addRecType($XErec) ->addRecType($XFrec) ->addRecType($I7rec) ->addRecType($HMrec);
-- @/=map{[/./g]}qw/.h_nJ Xapou cets krht ele_ r_ra/; map{y/X_/\n /;print}map{pop@$_}@/for@/
In Section
Meditations