반응형
기존 모델
// --------------- 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()
현재까지 잘 활용하는 중!
반응형