TL

toothlessdev

πŸ“– SRP, 단일 μ±…μž„ 원칙

단일 λͺ¨λ“ˆμ€ λ³€κ²½μ˜ μ΄μœ κ°€ λ°˜λ“œμ‹œ ν•˜λ‚˜ 뿐이어야 ν•œλ‹€
단일 λͺ¨λ“ˆμ€ ν•˜λ‚˜μ˜ 앑터에 μ˜ν•΄μ„œλ§Œ μ±…μž„μ Έμ•Ό ν•œλ‹€

πŸ“– SRP에 μœ„λ°˜λ˜λŠ” μ•ˆν‹°νŒ¨ν„΄ 예제

예제 1️⃣

export const SignInForm = () => {
    const [email, setEmail] = useState("");
    const [password, setPassword] = useState("");

    const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
        const { name, value } = e.target;

        if (name === "email") setEmail(value);
        else if (name === "password") setPassword(value);
    };
    // return ...
};

❓ 이 μ½”λ“œμ˜ μ•‘ν„°λŠ”?

μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œ 닀루고 μžˆλŠ” λ°μ΄ν„°μ—λŠ” email, password κ°€ μžˆμŠ΅λ‹ˆλ‹€.
μ•‘ν„°λŠ” email, password 데이터λ₯Ό λ³€κ²½ν•˜λŠ” 주체인 handleChange ν•¨μˆ˜μž…λ‹ˆλ‹€.

❓ 이 μ½”λ“œλŠ” μ–΄λŠ 뢀뢄이 SRP에 μœ„λ°˜λ˜λŠ”κ°€?

데이터λ₯Ό λ³€κ²½ν•˜λŠ” 주체인 handleChange ν•¨μˆ˜κ°€ email, password 두 κ°€μ§€ 데이터λ₯Ό λͺ¨λ‘ 닀루고 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ”, emailκ³Ό password 두 κ°€μ§€ 데이터λ₯Ό λ‹€λ£¨λŠ” μ±…μž„μ„ κ°€μ§€κ³  있기 λ•Œλ¬Έμ— SRP에 μœ„λ°˜λ©λ‹ˆλ‹€.

예제 2️⃣

πŸ“– κ³Όμœ λΆˆκΈ‰ (過猢不及) : SRP 원칙을 μ§€ν‚€λŠ” 것이 항상 μ˜³μ§€λŠ” μ•Šλ‹€

SRP 원칙을 μ§€ν‚€λŠ” 것이 항상 μ˜³μ€ 것은 μ•„λ‹ˆλΌκ³  μƒκ°ν•©λ‹ˆλ‹€.
κ³Όλ„ν•œ λΆ„λ¦¬λ‘œ μΈν•œ νŒŒνŽΈν™”κ°€ λ°œμƒν•  수 있고, μ΄λ‘œμΈν•΄ μ½”λ“œμ˜ 좔적이 μ–΄λ €μ›Œμ§ˆ 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.
λ”°λΌμ„œ, μ‹€μš©μ„±μ„ κ³ λ €ν•΄ λΆ„λ¦¬ν•΄μ•Όν•˜λ©°, ν”„λ‘œμ νŠΈμ˜ 규λͺ¨μ™€ μš”κ΅¬μ‚¬ν•­μ— 따라 SRP 의 μ μš©λ²”μœ„λ₯Ό μœ μ—°ν•˜κ²Œ μ‘°μ ˆν•΄μ•Ό ν•©λ‹ˆλ‹€.

πŸ“š 참고자료

  • 클린 아킀텍쳐 (λ‘œλ²„νŠΈ C. λ§ˆν‹΄) - Ch3.7 SRP 단일 μ±…μž„ 원칙