[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