--- id: wiki-2026-0508-cyclomatic-complexity title: Cyclomatic Complexity category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [uncategorized] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Cyclomatic Complexity]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) Cyclomatic Complexity(์ˆœํ™˜ ๋ณต์žก๋„)๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์—์„œ ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์ธก์ • ์ง€ํ‘œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค [1]. ๋ฆฌํŒฉํ† ๋ง์˜ ๊ฒฐ๊ณผ์™€ ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•˜๋Š” ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(AST) ๊ธฐ๋ฐ˜ ์ง€ํ‘œ๋กœ ํ™œ์šฉ๋˜๋ฉฐ, ์ฝ”๋“œ์˜ ๊ฒฐํ•ฉ๋„ ๋ถ„์„๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [2]. ์„ฑ๊ณต์ ์ธ ๊ตฌ์กฐ์  ๋ฆฌํŒฉํ† ๋ง์„ ๊ฑฐ์นœ ์ฝ”๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ•จ์ˆ˜๋‹น ํ‰๊ท  ์ˆœํ™˜ ๋ณต์žก๋„ ์ˆ˜์น˜๊ฐ€ ๊ฐ์†Œํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋˜๋Š” ํŠน์ง•์„ ๋ณด์ž…๋‹ˆ๋‹ค [3, 4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋ฆฌํŒฉํ† ๋ง์„ ํ†ตํ•œ ๋ณต์žก๋„ ๊ฐ์†Œ**: AI๋ฅผ ํ™œ์šฉํ•œ ๋ฆฌํŒฉํ† ๋ง ์‚ฌ๋ก€ ์—ฐ๊ตฌ์— ๋”ฐ๋ฅด๋ฉด, ๋น„๋Œ€ํ•œ ๋ผ์šฐํŒ… ๋ ˆ์ด์–ด์˜ ๋กœ์ง์„ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋ณ„ ์ „์šฉ ๋ ˆ์ด์–ด๋กœ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ์žฌ๋ถ„๋ฐฐํ•œ ๊ฒฐ๊ณผ ์ „์ฒด ํ•จ์ˆ˜์˜ ์ˆ˜๋Š” ๋Š˜์–ด๋‚ฌ์Œ์—๋„ ํ•จ์ˆ˜๋‹น ํ‰๊ท  ์ˆœํ™˜ ๋ณต์žก๋„๋Š” 2.24์—์„œ 2.13์œผ๋กœ ๋‚ฎ์•„์กŒ์œผ๋ฉฐ, ๋ผ์šฐํŒ… ๋ ˆ์ด์–ด ์ž์ฒด์˜ ํ‰๊ท  ๋ณต์žก๋„๋Š” 1.97๊นŒ์ง€ ํ•˜๋ฝํ–ˆ์Šต๋‹ˆ๋‹ค [3, 4]. * **์‹ค์ฆ์  ์—ฐ๊ตฌ์—์„œ์˜ ๊ฒ€์ฆ**: ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ(Windows 7) ์ง„ํ™” ๊ธฐ๋ก ๋ถ„์„์—์„œ๋„, ๋ฆฌํŒฉํ† ๋ง์ด ์šฐ์„ ์ ์œผ๋กœ ์ง‘์ค‘๋œ ์ƒ์œ„ 5%์˜ ๋ชจ๋“ˆ์€ ๋‚˜๋จธ์ง€ 95%์˜ ์ผ๋ฐ˜ ๋ชจ๋“ˆ์— ๋น„ํ•ด ์ˆœํ™˜ ๋ณต์žก๋„(Cyclomatic complexity)๋ฅผ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ๋ณต์žก์„ฑ ์ง€ํ‘œ(Fan-in, Fan-out ๋“ฑ)๋ฅผ ๋” ํฐ ํญ์œผ๋กœ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [5, 6]. * **ํ’ˆ์งˆ ์ธก์ •์˜ ๊ฐ๊ด€์  ์ฒ™๋„**: ์ˆœํ™˜ ๋ณต์žก๋„๋Š” ์•„ํ‚คํ…์ฒ˜์˜ ์˜์กด์„ฑ ๋ถ„์„๊ณผ ๊ฐ™์€ AST ๊ธฐ๋ฐ˜ ๋ฉ”ํŠธ๋ฆญ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด, ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ๊ฐ€ ๋‹จ์ˆœํžˆ ์žฌ๋ฐฐ์น˜๋œ ๊ฒƒ์„ ๋„˜์–ด ์‹ค์ œ์ ์ธ ๊ตฌ์กฐ์  ๊ฐœ์„ (์˜ˆ: ์‘์ง‘๋„ ๋†’์€ ์ž๊ธฐ ์™„๊ฒฐ์  ๋ชจ๋“ˆ๋กœ์˜ ์ „ํ™˜)์„ ์ด๋ฃจ์—ˆ๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๋„๊ตฌ๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค [2, 3]. * *(์ฐธ๊ณ : ์ œ๊ณต๋œ ์†Œ์Šค ๋‚ด์— ์ˆœํ™˜ ๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ •ํ™•ํ•œ ์ˆ˜ํ•™์  ๊ณต์‹์ด๋‚˜ ๊ตฌ์ฒด์ ์ธ ์ด๋ก ์  ์‚ฐ์ถœ ๊ธฐ์ค€์— ๋Œ€ํ•œ ๊ด€๋ จ ์ •๋ณด๋Š” ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.)* ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) * **๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์ฝ”๋“œ ๋ผ์ธ ์ˆ˜(LOC) ์ฆ๊ฐ€**: ์ˆœํ™˜ ๋ณต์žก๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด ์‘์ง‘๋„ ๋†’์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ๋ชจ๋“ˆ์ด๋‚˜ ํ•จ์ˆ˜๋กœ ๋…ผ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์ตœ์ ํ™”๋ฅผ ๊ฑฐ์น˜๋ฉด, ํ•„์—ฐ์ ์œผ๋กœ ์‹œ์Šคํ…œ ๋‚ด ์ „์ฒด ํ•จ์ˆ˜ ๋ฐ ์ปดํฌ๋„ŒํŠธ์˜ ์ˆ˜๋Š” ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: 806๊ฐœ์—์„œ 1,022๊ฐœ๋กœ ์ฆ๊ฐ€) [3]. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐœ๋ณ„ ํ•จ์ˆ˜์˜ ๋ณต์žก๋„๋Š” ๊ฐ์†Œํ•˜์ง€๋งŒ ์ „์ฒด ์ฝ”๋“œ ๋ผ์ธ ์ˆ˜(LOC)์™€ ํŒŒ์ผ ์ˆ˜๋Š” ์˜คํžˆ๋ ค ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐ˜๋Œ€ ๊ธ‰๋ถ€(Trade-off)๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [7-9]. * **๋‹ค์ฐจ์›์ ์ธ ํ‰๊ฐ€์˜ ํ•„์š”์„ฑ**: ์ˆœํ™˜ ๋ณต์žก๋„์™€ ๊ฐ™์€ ์ง€ํ‘œ๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ ์†Œํ”„ํŠธ์›จ์–ด ์ˆ˜์ • ๋น„์šฉ์ด ๋ชจ๋“  ์ธก๋ฉด์—์„œ ์ค„์–ด๋“œ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฆฌํŒฉํ† ๋ง๋œ ๋ชจ๋“ˆ์€ ๋ณต์žก๋„ ์ˆ˜์น˜๊ฐ€ ๋‚ฎ์•„์ง€๋”๋ผ๋„, ๊ตฌ์กฐ์  ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์ˆ˜์ • ์‚ฌํ•ญ์ด ์‹œ์Šคํ…œ ์—ฌ๋Ÿฌ ๊ณณ์— ํฉ์–ด์ง€๋Š” '๊ต์ฐจ ์ ˆ๋‹จ ๋ณ€๊ฒฝ(crosscutting changes)'์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹จ์ผ ์ง€ํ‘œ๊ฐ€ ์•„๋‹Œ ๋‹ค์ฐจ์›์ ์ธ ์˜ํ–ฅ ํ‰๊ฐ€๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ˆ˜๋ฐ˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [8, 9]. --- *Last updated: 2026-05-03* ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Parent:** [[10_Wiki/Topics]] - **Related:** *(TODO: ์ตœ์†Œ 2๊ฐœ)* - **Opposite / Trade-off:** *(TODO)* - **Raw Source:** ์ง์ ‘ ์ž…๋ ฅ ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*