Abutha Sanniya
brings madness not caused by spirits · in code: self-made complexity
Look at the knots insrc/ng/compile.jswhere nesting hits fifteen. Complexity of sixty-four insrc/ngAnimate/animateCss.jsmakes your logic a maze. You struggle to find the end of these long functions. I retreat into the tangle.
The evidence (12)
-
E1
src/ngAnimate/animateCss.js:417`init`: 187 lines, complexity 64, nesting 5 -
E2
src/ng/rootScope.js:101`this.$get`: 158 lines, complexity 33, nesting 11 -
E3
src/ng/rootScope.js:771`$digest`: 91 lines, complexity 37, nesting 11 -
E4
src/ng/compile.js:2926`applyDirectivesToNode`: 67 lines, complexity 25, nesting 15 -
E5
src/ng/parse.js:906`recurse`: 132 lines, complexity 44, nesting 6 -
E6
Gruntfile.js:56`module.exports`: 337 lines, complexity 4, nesting 8 -
E7
src/ng/compile.js:3814`getTrustedAttrContext`: 24 lines, complexity 17, nesting 14 -
E8
src/ngAnimate/animateQueue.js:326`queueAnimation`: 114 lines, complexity 35, nesting 5 -
E9
src/ngMock/angular-mocks.js:902`(anonymous)`: 9 lines, complexity 1, nesting 17 -
E10
src/ngResource/resource.js:724`(anonymous)`: 77 lines, complexity 30, nesting 5 -
E11
src/ng/compile.js:2519`compileNodes`: 30 lines, complexity 13, nesting 12 -
E12
src/ng/compile.js:2694`collectDirectives`: 72 lines, complexity 21, nesting 7
The exorcism
Refactor complex and deeply nested functions.
- Identify functions with complexity above 20 in
src/ng/compile.jsandsrc/ng/parse.js. - Extract deeply nested logic into smaller, named helper functions.
- Flatten the nesting in
applyDirectivesToNodeandrecurse.