본문 바로가기
javascript

함수 + switch로 유효성 검사

by momomoo 2024. 5. 18.

`switch` 문을 사용하여 함수 내부에서 유효성 검사를 수행하면 코드가 더 읽기 쉽고 관리하기 쉬울 수 있습니다. `switch` 문은 명확하고 구조화된 방식으로 여러 조건을 처리할 수 있기 때문에, 여러 유형의 입력 값이나 다양한 유효성 검사 규칙을 처리하는 데 유용합니다.

다음은 `switch` 문을 사용하여 함수 내부에서 유효성 검사를 수행하는 예제입니다. 이 예제에서는 다양한 입력 필드에 대해 유효성을 검사하는 함수를 정의합니다.

### 예제: 다양한 입력 필드에 대한 유효성 검사

```javascript
function validateField(fieldName, value) {
    switch (fieldName) {
        case 'username':
            if (typeof value !== 'string' || value.trim().length < 3) {
                return 'Username must be a string with at least 3 characters';
            }
            return 'Valid username';
        
        case 'email':
            // 간단한 이메일 유효성 검사 정규식
            const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
            if (!emailPattern.test(value)) {
                return 'Invalid email address';
            }
            return 'Valid email';
        
        case 'password':
            if (typeof value !== 'string' || value.length < 8) {
                return 'Password must be at least 8 characters long';
            }
            return 'Valid password';
        
        case 'age':
            if (typeof value !== 'number' || value <= 0) {
                return 'Age must be a positive number';
            }
            return 'Valid age';
        
        default:
            return 'Unknown field';
    }
}

// 테스트
console.log(validateField('username', 'js'));          // Username must be a string with at least 3 characters
console.log(validateField('username', 'javascript'));  // Valid username
console.log(validateField('email', 'test@test.com'));  // Valid email
console.log(validateField('email', 'test.com'));       // Invalid email address
console.log(validateField('password', '12345'));       // Password must be at least 8 characters long
console.log(validateField('password', 'password123')); // Valid password
console.log(validateField('age', 25));                 // Valid age
console.log(validateField('age', -5));                 // Age must be a positive number
console.log(validateField('unknown', 'test'));         // Unknown field
```


### 장점
- **가독성**: `switch` 문을 사용하면 각 조건이 명확하게 구분되어 코드가 더 읽기 쉽습니다.
- **유지보수**: 새로운 필드나 유효성 검사를 추가하기가 더 쉽습니다. `switch` 문에 새로운 케이스를 추가하기만 하면 됩니다.
- **구조화**: 각 유효성 검사 로직이 별도의 `case` 블록에 위치하므로, 코드가 더 구조화되고 정리되어 보입니다.

### 단점
- **제한적인 유연성**: `switch` 문은 정적 값에 대해서만 작동합니다. 동적 조건이나 복잡한 로직을 처리하는 데는 다소 불편할 수 있습니다.
- **반복적인 코드**: 유효성 검사 로직이 길어지면 각 `case` 블록 안에 중복 코드가 발생할 수 있습니다.

`switch` 문을 사용하여 유효성 검사를 구현하면 이러한 장점과 단점을 고려하여 적절한 경우에 사용하면 됩니다. 각 상황에 맞는 적절한 방법을 선택하는 것이 중요합니다.