Skip to content

three523/Subvey_mission

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

설명

서버에서 설문조사에 필요한 정보를 받아와 정보를 토대로 UI를 그리고 입력 폼에 따라 알맞은 유효성 검사를 하고 문제가 없으면
통해 입력한 내용을 서버에 보내주는 설문조사 앱입니다.

시현 영상

파일 구조

├─ Subvey_Mission
│  ├─ Core // 가장 중요한 기능들을 모아놓은 디렉토리
│  │  ├─ Form // From 관련 기능들을 모아놓은 디렉토리
│  │  └─ Validate // 유효성 검사 관련 기능들을 모아놓은 디렉토리
│  │     ├─ ValidateError.swift
│  │     ├─ Validations // 각종 유효성 검사를 진행하는 클래스 디렉토리
│  │     └─ Validators // 유효성 검사를 모아서 작업 할 수 있도록 하는 클래스 디렉토리
│  ├─ Entity // 설문 조사 관련 데이터 디렉토리
│  ├─ Error // 네트워크 에러와 관련된 디렉토리
│  ├─ Network // 네트워크 작업 관련 디렉토리
│  ├─ Page
│  │  ├─ Home
│  │  │  └─ Controller
│  │  └─ Question
│  │     ├─ Controller
│  │     ├─ View // 설문 조사화면에 필요한 View의 디렉토리 ( 글자타입 설문 뷰, 체크타입 설문 뷰 등등 )
│  │     └─ ViewModel
│  └─ Utils // 각종 도움을 주는 함수와 클래스 디렉토리
│     └─ Extension
├─ doc // 구현 설명 문서 디렉토리
└─ mock // API Json 파일 디렉토리

로직

sequenceDiagram
  participant VM as QuesionViewModel
  participant VC as ViewController   
  participant QV as QuestionView
  
  VC ->> VM: 설문 내용 요청
  note left of VM: 서버에 데이터 요청
  loop 
    VM ->> VC: 질문 폼 전달 , 실패시 에러 전달 및 에러뷰 띄우기
    VC ->> QV: 전달 받은 폼 전달
    note right of QV: 사용자가 다음 버튼 클릭시 Validation 체크
    QV --> VC: Validation 성공시 VC에게 설문 응답 전달
    VC --> VM: Form 질문 대답 내용 전달
    note left of VM: 질문내용 저장
    break 만약 질문이 없을 경우
      note left of VM: 총 질문 대답 서버에 전달, 다음 설문이 필요한 경우 새로운 설문 요청
    end 
  end
Loading

API

Postman의 목업 서버를 사용하여 구현함
기본설문조사 API URL
추가설문조사 API URL

구현

컨벤션

풀리퀘스트, 커밋 컨벤션

  • Feat: 새로운 기능 추가
  • Fix: 버그 수정
  • Doc: 문서 수정
  • Style: 들여쓰기, 줄바꿈 등등 코드 변경이 없는 경우
  • Refactor: 코드 리펙토링

아쉬웠던점

일단 다양한 타입이 올 수 있다는 것이 디코딩 작업을 하는 것도 생각보다 복잡하다고 느껴졌다.
또한 각자 타입에 맞는 Validate를 해주고 다시 그려야 하다보니 굉장히 많은 조건문이 생기는 문제가 발생했다.
Validation을 생성 하는 것은 팩토리 패턴으로 어떻게 구현할 수 있을지 고민을 하고 있는 중이다.

또한 라이브러리를 따라하지 않으려고 억지로 뷰안에 Validator를 넣어서 뷰안에서 Validate를 하는 작업을 하였는데 좋지 않은 방법이였다.
뷰 안에서는 값만 가지고 있고 그 값을 ViewController에서 버튼 클릭시 가져오는 방식으로 구현 했으면 View안에서는 뷰 전환만 하는 방법이 있었지 않을까 싶다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages