본문으로 건너뛰기
cccskills
무료GitHub에 공개

Simplifying Control Flow

Flatten nested conditionals with early returns or table-driven methods - keep nesting depth under 3 levels

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md3.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Simplifying Control Flow

Overview

Nested conditionals are hard to understand and error-prone. Flatten them.

Core principle: Nesting depth < 3 levels. Use early returns, table-driven methods, or extracted conditions.

Baseline Violation

Agents create nested if/else for multi-condition logic:

❌ Nested (baseline):

def calculate_discount(order_amount, is_vip):
    if is_vip:
        if order_amount > 1000:
            return 0.20
        elif order_amount > 500:
            return 0.15
    else:
        if order_amount > 1000:
            return 0.10
        elif order_amount > 500:
            return 0.05
    return 0.0

Problems: Duplicated logic, hard to see all tiers, adding tier requires finding nesting spot.

Three Techniques

1. Flatten with Combined Conditions

✅ All at same level:

def calculate_discount(order_amount, is_vip):
    if is_vip and order_amount > 1000: return 0.20
    if is_vip and order_amount > 500: return 0.15
    if order_amount > 1000: return 0.10
    if order_amount > 500: return 0.05
    return 0.0

2. Table-Driven (Best for Data)

✅ Business rules as data:

DISCOUNT_TIERS = [
    (1000, 0.20, 0.10),  # min_amount, vip_rate, regular_rate
    (500,  0.15, 0.05),
]

def calculate_discount(order_amount, is_vip):
    for min_amount, vip_rate, regular_rate in DISCOUNT_TIERS:
        if order_amount > min_amount:
            return vip_rate if is_vip else regular_rate
    return 0.0

When to use: Pricing tiers, status transitions, configuration-driven logic.

3. Extract Complex Conditions

✅ Named boolean for clarity:

def is_eligible(user, minimum):
    return (user.age >= 18 and user.verified_email and
            user.balance > minimum and not user.suspended)

if is_eligible(user, minimum_purchase):
    allow_purchase()

When to use: Complex boolean expressions, reused conditions.

Quick Reference

ProblemSolution
Nested if/elseFlatten with combined conditions OR table-driven
Deep nesting (>3)Extract inner logic to function
Complex booleanExtract to named function
Business rulesTable-driven method
Long if/elif chainTable lookup OR polymorphism

Guard Clauses

Baseline showed agents already use these well:

def validate(data):
    if not data:
        return False, "data required"  # Early return
    if data.amount <= 0:
        return False, "amount must be positive"  # Early return
    # Main logic here (no nesting)

Keep using this pattern for validation and error cases.

Red Flags

  • Nesting depth > 3
  • Can't see matching braces without scrolling
  • Duplicate conditions in nested blocks
  • Adding new case touches multiple nesting levels

Fix: Flatten or use table-driven.

Real-World Impact

From baseline:

  • Agents created 2-level nesting for 4 discount tiers
  • With table-driven: All tiers visible, easy to add/modify

Integration with Other Skills

For complex functions: See skills/keeping-routines-focused - extract when nesting gets deep

For reducing complexity: See skills/architecture/reducing-complexity - simpler control flow = less complexity

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Interactive idea refinement using Socratic method to develop fully-formed designs

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

obra/clank422025년 10월 10일 업데이트

Receive and act on code review feedback with technical rigor, not performative agreement or blind implementation

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

obra/clank422025년 10월 10일 업데이트

Comment WHY code exists and non-obvious decisions, not WHAT code does (mechanics)

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

obra/clank422025년 10월 10일 업데이트

Replace arbitrary timeouts with condition polling for reliable async tests

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

obra/clank422025년 10월 10일 업데이트

TDD for process documentation - test with subagents before writing, iterate until bulletproof

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

obra/clank422025년 10월 10일 업데이트

Validate at every layer data passes through to make bugs impossible

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

obra/clank422025년 10월 10일 업데이트

obra의 스킬 모두 보기

이 스킬의 문제 신고