http://qs1969.pair.com?node_id=417958


in reply to Mutator chaining considered harmful

The advantage of returning $self is that the user of the code is free to decide to use either style, that is:
$window->title('foo'); $window->border(20);
Or
$window->title('foo')->border(20);
If you don't return $self, you're taking the decision for the user. Which isn't very friendly.

Now, I don't have a problem with

$window->title('foo')->border(20);
If I see this code, and I've no idea what the title and border methods are, my assumption will be that the title of the window is set to foo, and the border will be 20 pixels wide. I don't see the problem either, unless you have windows with labelled titles, so that there's the possibility that $window->title('foo') returns the 'foo' title.

I probably won't do the chaining as you give. I'd probably write it as:

$window->title('foo')->border(20); my $button = $window->child->border(20); my $label_formatting = $button->child->font_style;

But I will return $self from accessors.