logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Perl::Critic::Policy::ValuesAndExpressions::ProhibitLongChainsOfMethodCalls - Long chains of method calls

Affiliation

       This Policy is part of the core Perl::Critic distribution.

Author

       Elliot Shank "<perl@galumph.com>"

Configuration

       This policy has one option: "max_chain_length" which controls how far the code is allowed to navigate.
       The default value is 3.

Description

       A long chain of method calls usually indicates that the code knows too much about the interrelationships
       between objects.  If the code is able to directly navigate far down a network of objects, then when the
       network changes structure in the future, the code will need to be modified to deal with the change.  The
       code is too tightly coupled and is brittle.

           $x = $y->a;           #ok
           $x = $y->a->b;        #ok
           $x = $y->a->b->c;     #questionable, but allowed by default
           $x = $y->a->b->c->d;  #not ok

Name

       Perl::Critic::Policy::ValuesAndExpressions::ProhibitLongChainsOfMethodCalls - Long chains of method calls
       indicate tightly coupled code.

To Do

       Add a "class_method_exemptions" option to allow for things like

           File::Find::Rule
               ->name('*.blah')
               ->not_name('thingy')
               ->readable()
               ->directory()
               ->in(@roots);

See Also