Consider this instead:I agree that named parameters are a huge win. That's a bit of Lisp and PL/SQSL I miss frequently in other languages.my $circle = Circle->new( radius => 4.5, origin => [2.3, 2.2], visibility => 1, );
And frankly, without named parameters, it seems to me the convenience constructor debate really becomes a choice between the lesser of two evils. On the one hand we can be verbose, on the other we can be cryptic. I personally prefer cryptic to verbose: I expect a maintainer to look up parameters as he or she needs.
But I return to my thesis: maintainability is a red herring. If we choose which idioms to use based on aesthetic value, we eliminate the problem. We both agree that a constructor taking a series of numbers is ugly. But I would argue that :
my $capital = Capital -> new ("Canada", "Ottawa");Is obvious and very maintainable, even though it's conceptually the same pattern.
My conclusion is that a sense of code aesthetics allows us to choose the best (or least evil) option on a case-by-case basis.