Deep nesting
Code longer than it needs to be: one of the ways AI coding agents bloat software, from lessloc's pattern catalog. lessloc catches it as deep-nesting.
What makes deep nesting a bad practice?
The standards that call it a bad practice: CWE-1124 Excessively Deep Nesting; Sonar S134; Fowler: Replace Nested Conditional with Guard Clauses.
What does lessloc do about deep nesting?
lessloc catches it as deep-nesting.
deep-nesting(tier 2): Statements nested 4 or more control levels deep.
Examples
Caught as deep-nesting:
python
def scan(rows):
for r in rows:
if r:
for c in r:
if c:
print(c)Written well:
python
def scan(rows):
for r in rows:
for c in r or []:
if c:
print(c)Related patterns
The other patterns in Code longer than it needs to be:
- Brute-force idioms: lessloc catches it as
simpler, built in for Python, JS/TS, Go, Rust, Java and C#. ruff (in every hook) and clippy (inci) go deeper. - Hand-built counters and flag loops: lessloc catches it as
simpler. - A catch that only rethrows: lessloc catches it as
simpler. - A promise wrapped in new Promise: lessloc catches it as
simpler. - Annotating types the compiler infers: lessloc catches it as
simpler. - A React Effect that only sets state from other values: lessloc catches it as
simpler. - Functions with many parameters (8 or more): lessloc catches it as
long-params. - Long functions: lessloc catches it as
long-function. - If-chains on literal values: lessloc catches it as
if-chain. - A file that keeps growing: lessloc catches it as
swollen-file. - Reformatting lines the task did not change: lessloc gives every session a rule against it and catches it as
churn. - Net growth past a budget: lessloc catches it as
net-growth. - Golfed code: lessloc catches it as
cleveranddense-lines.

