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.