VIBECODING 365 / DICTIONARY
함수
Function
DEFINITION
함수는 JavaScript의 기본 구성 단위다. MDN JavaScript Guide는 함수를 어떤 일을 하거나 값을 계산하는 문장들의 묶음에 가깝다고 설명하면서, 입력과 출력 사이에 분명한 관계가 있을 때 함수라고 부를 수 있다고 덧붙인다. 쓰려면 호출하려는 범위 안에 먼저 정의해 두어야 한다. 버튼을 눌렀을 때 할 일, 가격을 계산하는 식, API에서 받은 값을 정리하는 절차처럼 반복되거나 이름이 필요한 동작을 여기에 담는다.
정의만 해서는 실행되지 않는다. 이름을 붙이고 이렇게 동작한다고 적어 둔 뒤, 필요할 때 인자를 넘겨 호출해야 본문이 돌아간다. 선언은 보통 function 키워드, 이름, 괄호 안의 매개변수 목록, 중괄호 안의 본문으로 이루어진다. 같은 로직을 값처럼 만들 때는 함수 표현식을 쓰고, 이름 없이 익명으로 두었다가 다른 함수에 인자로 넘기는 패턴도 흔하다. 객체의 메서드도 결국 그 객체에 붙어 있는 함수다.
값으로 넘기고, 범위로 가둔다
숫자·문자열 같은 원시 값은 대체로 값 복사로 넘어가서, 함수 안에서 매개변수에 새 값을 넣어도 바깥 변수는 안 바뀐다. 객체나 배열을 넘기면 속성·원소를 고친 결과가 바깥에서도 보일 수 있다. 함수 안에 선언한 변수는 그 함수 밖에서 직접 읽을 수 없고, 안쪽 함수는 바깥 함수의 변수를 기억할 수 있다. MDN이 말하는 클로저는, 부모 범위가 끝난 뒤에도 그 변수를 붙들고 있는 코드 조각이다. 덕분에 설정값이나 카운터를 바깥에 노출하지 않고 유지할 수 있다.
선언·표현식·화살표
함수 선언은 같은 범위 안에서 호이스팅되어, 코드상 아래쪽에 적어도 위에서 호출할 수 있는 경우가 많다. 함수 표현식은 그렇게 끌어올려지지 않아, 초기화 전에 부르면 오류가 난다. 화살표 함수는 더 짧은 표기이며, 자신만의 this나 arguments를 갖지 않고 항상 익명이다. 배열 map 같은 콜백을 짧게 넘길 때 자주 쓰인다.
바이브 코딩에서의 위치
의미가 분명한 동작을 함수로 빼면 읽기와 테스트가 쉬워진다. AI에게 거대한 컴포넌트에서 로직을 함수로 분리해 달라고 할 때도, 입력·출력·부작용 범위를 먼저 정하면 임시 이름과 중복 본문이 줄어든다. 한 함수가 너무 많은 분기를 품으면 복잡도 경고등이 켜지므로, 이름 하나로 설명할 수 있는 단위까지 나누는 것이 안전하다.
ENGLISH
Function
EXAMPLE
function square(n) { return n * n }
관련
이어서 볼 문서
RELATED TERMS
연관 용어
Prompt Template
반복해서 쓰는 AI 작업 지시를 일정한 칸으로 나누어 재사용하는 프롬프트 형식이다. 초보자는 매번 즉흥적으로 '이 기능 만들어줘'라고 쓰기보다, 목표, 현재 파일, 입력 자료, 제약 조건, 원하는 출력 형식, 검증 방법을 같은 순서로 채우면 AI가 누락 없이 코딩 작업을 수행하기 쉽다. 특히 VIBE 코딩에서는 템플릿이 작업 범위를 고정하는 안전장치가 된다. 예를 들어 버그 수정 템플릿에 재현 단계, 기대 동작, 실제 동작, 실패한 테스트, 수정 금지 파일을 넣으면 AI가 엉뚱한 리팩토링으로 번지는 일을 줄일 수 있다. 좋은 템플릿은 길기만 한 문서가 아니라, 사람과 AI가 함께 확인해야 할 결정 지점을 빠뜨리지 않게 해주는 체크리스트에 가깝다.
코드 품질·리뷰 리팩토링Refactoring
외부에서 관찰 가능한 동작(기능, API, 사용자 경험)을 변경하지 않으면서 코드의 내부 구조를 개선하는 체계적 작업이다. Martin Fowler의 1999년 저서 『Refactoring: Improving the Design of Existing Code』에서 체계화된 개념으로, 가독성 향상, 중복 제거, 복잡도 감소, 성능 개선, 테스트 용이성 향상 등을 목적으로 한다. 바이브 코딩에서 리팩토링은 특별한 의미를 가진다. AI가 초기에 생성한 코드는 기능적으로 동작하더라도 구조적으로 최적이 아닌 경우가 많으므로, AI와 협업하여 리팩토링을 수행하는 것이 일반적인 워크플로이다. 예를 들어, Claude Code에게 '이 컴포넌트를 더 작은 컴포넌트로 분리하고, 공통 로직을 커스텀 훅으로 추출해줘'와 같은 리팩토링 지시를 내릴 수 있다. 2026년 기준으로 AI 도구는 단일 서비스 내 리팩토링(파일 분할, 함수 추출, 타입 개선 등)은 잘 수행하지만, 마이크로서비스 간 크로스 시스템 리팩토링(서비스 경계 재정의, 데이터 모델 마이그레이션 등)은 아직 인간의 아키텍처 판단이 필수적인 영역이다.
code-quality 코드 복잡도Cyclomatic complexity
실무에서 말하는 코드 복잡도는 대개 순환 복잡도이다. McCabe가 1976년에 제안한 지표로, 제어 흐름에서 서로 다른 실행 경로가 몇 갈래인지를 센다.