Programing

javascript object to class refactor

handam 2024. 12. 30. 13:38

 

const inquiryData = {};

 

보통은 객체를 만들어서 전역으로 사용하곤 하는데, 지양하고 아래와 같이 클래스화 시키는 것을 지향해야겠다.

 

class InquiryRequest {
    constructor() {
        this.data = {
            type: '',
            detailType: '',
            title: '',
            content: '',
            fileIds: []
        };
    }
    
    updateData(key, value) {
        // 키가 존재하는지 확인
        if (!this.data.hasOwnProperty(key)) {
            console.error(`Invalid key: ${key}`);
            return;
        }
        
        // 값 유효성 검사
        if (!this.validateValue(key, value)) {
            console.error(`Invalid value for ${key}`);
            return;
        }
        
        this.data[key] = value;
    }
    
    validateValue(key, value) {
        switch(key) {
            case 'title':
                return value.length <= 50;
            case 'content':
                return value.length <= 1000;
            case 'fileIds':
                return Array.isArray(value);
            // 다른 필드들에 대한 검증 로직 추가
            default:
                return true;
        }
    }
    
    isValid() {
        return !!(
            this.data.type &&
            this.data.detailType &&
            this.data.title &&
            this.data.content
        );
    }
    
    reset() {
        this.data = {
            type: '',
            detailType: '',
            title: '',
            content: '',
            fileIds: []
        };
    }
}

 

사용시

$(function() {
    // InquiryRequest 인스턴스 생성
    const inquiryRequest = new InquiryRequest();
    // updateData 메서드를 사용하여 데이터 업데이트
    inquiryRequest.updateData('type', '값');
});

 

이렇게 하면 데이터 관리가 더 체계적이고 안전해집니다. 또한 데이터 검증도 클래스 내부에서 할 수 있다.

 

 

  • 데이터 무결성 보장
  • 중앙집중식 데이터 관리
  • 유효성 검사 로직 통합
  • 실수로 인한 데이터 오염 방지
  • 디버깅이 용이함

 

반응형