본문 바로가기

개발

[Code Convention] API Model 개선하기

반응형

기존 모델

// --------------- Model ------------- //

/// ApiModel의 Request
struct ApiModel_Req: Codable {

}

/// ApiModel의 Response
struct ApiModel: BaseResponse, Codable {

}

/// 구조체
struct Model: Codable {

}

// --------------- ViewModel ------------- //

let request = ApiModel_Req()
let response = ApiModel()
let data = Model()

 


불편한 점 : Model과 ApiModel 간의 구분하기 어려움 
개선 제안 : ApiModel_Req처럼 ApiModel을 ApiModel_Res로 사용하여 API용 모델과 데이터 모델 구분

 

개선 1차

// --------------- Model ------------- //

/// ~를 위한 ApiModel Request
struct ApiModel_Req: Codable {

}

/// ~를 위한 apiModel Response
struct ApiModel_Res: BaseResponse, Codable {

}

/// 구조체
struct Model: Codable {

}

// --------------- ViewModel ------------- //

...
let request = ApiModel_Req()
let response = ApiModel_Res()
let data = Model()


불편한 점 : response와 request의 차이가 s 와 q 하나로 구분되기 때문에 가독성이 줄고 실수가 늘어날 수 있음

개선 제안 : 명칭을 시각화하고 동일한 성질을 묶어서 사용

 

개선 2차 - 최종

// --------------- Model ------------- //


/// ~를 위한 API 모델
struct ApiModel_API: Codable {
	
    struct Request: Codable {
    
    }
    
    struct Response: BaseResponse, Codable {
    
    }
    
    struct Path: Codable {
    
    }

}

/// 구조체
struct Model: Codable {

}

// --------------- ViewModel ------------- //

...
let request = ApiModel_API.Request()
let response = ApiModel_API.Response()
let path = ApiModel_API.Path()
let data = Model()

 

현재까지 잘 활용하는 중!

 

 

반응형