// 순수 함수 예시
function add(a: number, b: number): number {
return a + b;
}
정의: 하나의 함수(또는 모듈)는 하나의 역할만 수행해야 한다.
예시 (나쁜 예):
async function fetchAndRenderUser(id: string) {
const res = await fetch(`/api/users/${id}`);
const data = await res.json();
document.querySelector("#username").textContent = data.name;
}
개선된 예:
async function fetchUser(id: string) {
const res = await fetch(`/api/users/${id}`);
return await res.json();
}
function renderUser(user: { name: string }) {
document.querySelector("#username").textContent = user.name;
}
테스트 용이성:
let count = 0;
function unpredictable() {
return ++count;
}
function predictable(a: number, b: number): number {
return a + b;
}
지양해야 하는 예:
private → public으로 변경권장하는 접근:
| 조건 | 설명 |
|---|---|
| 순수 함수 | 외부 상태에 의존하지 않음, 독립적인 테스트 가능 |
| 단일 책임 원칙 | 하나의 역할만 하도록 설계, 테스트가 명확해짐 |
| 예측 가능한 코드 | 테스트 시 의도치 않은 결과 방지 |
| 리팩토링 관점 | 테스트가 어렵다면 코드 자체를 개선할 시점 |