[UIKit] Storyboard vs Code


Storyboard vs Code


Storyboard

  • Storyboard : 여러개의 View를 한번에 구현할 수 있는 툴, View들간 transition 등 처리 가능
  • Xibs: 하나의 파일이 하나의 View에 대응

Storyboard 장점

  • 소스 코드를 하나하나 뜯어보지 않아도 한번에 어떤 View인지 파악이 가능
  • ViewController의 코드 길이가 매우 짧아짐
  • 러닝커브, 초심자에게 쉽다.
  • 프로토타입에 용이
    • 사용자 인터페이스 및 흐름의 프로토타이핑 및 목업을 단순화
    • SwiftUI 가 나온 지금에 와서 더이상 장점이라 할 수 없음
  • View에 어떤 속성과 값을 설정했는지 확인이 쉬움

Storyboard 단점

  • Storyboard의 크기가 방대해질 경우 로딩이 느려짐
    • 화면 단위로 Stroyboard를 분리한다면 어느정도 극복은 가능
  • 필요하지 않은 ViewController들이 생겨나서 메모리 낭비 현상이 발생
  • 재사용성 없음
    • Storyboard는 하위 View들을 재사용 하기 불편
    • Xibs는 재사용이 가능하지만 작은 View임에도 불구하고 .swift, .xib 두개의 파일(컨텍스트)을 오가면서 작성해야 하는 단점 존재
  • Git 충돌이 나기 쉬움
    • 팀 내부적으로 동시에 하나의 Storyboard 작업을 금지
  • 협업 시 Conflict가 났을 때 대처하기 어려움
    • Storyboard나 Xibs 파일은 코드 리뷰가 불가능
    • xml 파일을 코드 리뷰 할 수 있는 개발자가 많지 않음
  • 리팩토링에 용이하지 않음
    • 복잡한 View일수록 더 심각해짐
  • View, VC와 Storyboard간의 연결이 끊어진 경우, 실행해 봐야 알 수 있음.
    • 빌드 타임이 아니라 런 타임에 체크하기 때문에 스토리보드와 Swift 파일간 연결이 끊겨도 빌드가 됨
  • 동적으로 UI를 구성하기 힘듦
    • Code로 분기를 나눌 수 밖에 없음

Code

Code 장점

  • 빌드 시간이 비교적 확연히 빠르다
  • UI 변경에 빠르게 대응할 수 있음
  • 마우스가 아니라 키보드로 UI 작성할 수 있음
  • Autolayout 구조에 대한 깊은 이해가 가능
  • 익숙해지면 코드로 작성하는 것이 스토리보드 보다 개발속도, 리팩토링이 훨씬 빨라짐.
  • 재사용성
    • 두 개 이상의 View가 똑같은 모습을 보이는 것 같지만 약간 다른 경우
    • 각각 특정 사용자 지정이 있는 앱을 만들어야 하는 경우, 두 개 이상의 서로 다른 애플리케이션을 생성해야 함
  • 협업 시 xml Merge Conflict가 없음
  • 디버깅이 쉬움
  • 모든것을 디테일하게 컨트롤 가능
  • 메모리에서 읽기, 분석하기, 파싱하기 라는 단계가 없음
  • Localizing이 쉬움
  • Launch Screen을 제외한 Stroyboard에서 구현하는 것은 모두 코드로 구현 가능

Code 단점

  • 해당 컴포넌트에 대한 숙지 필요
  • ViewController의 길이가 길어짐
  • 구현된 View 예측 어려움
    • 앱을 실행 시켜야 UI 확인 가능
  • 러닝 커브

방식의 차이일 뿐

  • 현업에서도 프로젝트 상황에 맞게 팀과 협의하여 결정하고, 필요하면 혼용한다고 함
  • Storyboard만으로 구현이 불가능한 UI도 존재하기 때문에 두 영역 모두 학습해야 한다고 함

현재 UIKit을 처음 공부해 보는 나에게는 Storyboard를 통해 AutoLayout에 대한 개념 이해를 하고 Code로 구현을 해보는 것도 좋겠다는 생각이 듦


참고

Won Blog
okstring.log
HANJUN iOS Blog
하르밤 tistory Blog






© 2021. by hminkim