---
# System prepended metadata

title: JK님 코드 리뷰

---

# JK님 코드 리뷰

- zip 파일 다운받아서 바로 빌드되는지 확인해보기

- 폴더 구조 나누는 방법: 화면별로 나누기 vs 기능별로 나누기
  - 장단점이 있는 문제고 익숙한 상태에서 찾는거랑 익숙하지 않은 상태에서 구조적으로 찾기 쉬운지

  화면이 재사용되는 컴포넌트가 있다면 어디넣어야할지 햇갈리게됨.
  -> 우리는 Common폴더를 중간중간에 넣어서 따로따로 넣긴함
  -> 공통적인 요소가 더 많아지면 화면별로 나누는게 의미가 없어질 때도 있음
  -> 결국 구조/파일구성/프로젝트구성 등은 변화가 생길 때 마다 의사결정을 새롭게 해야하기 때문에 항상 염두하면서 작업을 진행하자.


- ApplicationLaunch
  - import 내역으로 역할이 짐작이 안감
  - AVFoundation으로 변경?

- Extension
  - isNotEmpty
    - 부정문은 읽었을 때, 직관적이지 않다.
    - isExist?
  - Extension의 사용 범위를 고려하여 위치를 정하자

- BlurCircleButton
  - button인데 view를 상속받는 부분
  - 버튼에 사용하는 함수들을 override할 때 헷갈리 수 있을 것 같다
  - 일관성

- CloseButton
  - 상속받고 새로운 클래스만드는 것도 한 방법이지만 이 정도면 builder 패턴으로 만드는 방법도 괜찮을 것 같다
  - 일관성

- CarouselView
  - 127번째줄 이벤트 제어.
    - 할 부분 남았다면 그냥 주석으로 두지말고 // TODO:, // FIXME: 와 같은 표시 남기기
    - 에러는 viewModel에서 별도의 state를 가지고 이를 viewController에서 구독하여 처리하기

  - JK: CarouselView에서 스크롤을 constaint 변경으로 컨트롤하는 이유는?
  - 

  - AVKit의 Player
    - 성능과 가장 밀접한 이슈로 남을 수도

- JK: ViewModel까지는 아니더라도 Usecase만큼은 따로 뜯어서 테스트해볼 수 있을 정도로 구현된다면 좋을 것 같다
  - 테스트를 ViewModel 보단 Usecase를 중점으로 해야하는가? 의논이 필요함

- Storyboard 없이 코딩
  - UI 구성 코드가 중복되는 부분을 유의
  - 우리는 잘 하고 있는 듯? like CloseButton

- self.view를 대체할 정도의 뷰를 만들어서 뷰컨에서 뷰 생성파일을 때버리기?

- Bundle 데이터를 포함하였을 때
  - Scale에 따른 배율 파일을 모두 준비해야한다.
  - Bundle보단 Asset?
    - Asset으로 하면 URL을 가져올 수 있는가? 확인 필요

- Bundle Data를 Xcode가 자기 나름대로 바꿔서 넣는다.
  - Build Rules > Compress PNG Files
    - 다른 확장자는 안되는데 png에 대해서만 압축이 한번 들어간다는 사실을 알고있어야 한다

- 앱 안에 Framework을 포함해서 배포할지 안할지 옵션 고려해보기
  - 현재 앱크기가 100mb정도인데 Framework만 35mb 정도임
  - 미탑재의 장점: 앱만 배포 + 앱 용량 축소
  - 탑재의 장점: ?