iOS 14

[Swift] SOLID 원칙 iOS에 적용해보기

이론만 외우고 있던 SOLID 원칙,, 자세히 보니 이미 자연스럽게 쓰고 있었던 것들이다더 체계적으로 적용하고 활용하기 위해 정리해본다 ✅ SOLID?로버트 마틴(Uncle Bob)이 정리한 객체지향 설계 5원칙. 이 원칙들을 지키면:변경에 유연한 구조: 결합도는 낮고, 응집도는 높은 코드이해하기 쉬운 구조: 가독성이 좋고 디버깅하기 편한 코드무작정 따르는 게 아니라 판단력을 가지고 적용해야 함. 과도하게 적용하면 오히려 복잡해질 수 있음!1️⃣ SRP: 단일 책임 원칙"클래스 변경 이유는 딱 하나여야 한다""하나의 책임만 가져야 한다" -> 사실 '책임'은 주관적인 평가=> 정확한 정의: "변경의 이유가 하나, 오직 하나뿐이어야 한다"// ❌ 나쁜 예: 4가지 변경 이유를 가짐class UserView..

iOS 2025.06.10

[iOS] 리팩토링이라 쓰고 파일분리노가다라고 읽기

뷰컨트롤러 파일에 모든것을 때려박아 개발한 어제의 나 왜그랬을까? 오늘의 내가 view와 viewcontroller 그리고 tableview로 분리했다.. 처음에 생각한 순서는 뷰 → 테이블뷰 → VC 순으로 분리한다였다단순한걸 먼저 정리하는게 나을거라고 생각했기 때문에!뷰를 분리한 후 빌드해볼 생각은 안하고 신나게 테이블뷰까지 다 분리를 하고 빌드를 하니 !완전히 꼬임 ^^당연한게 뷰 분리 후에도 테이블뷰 로직이 VC에 남아 있어서 애매한 상태로 테이블뷰를 분리했었다 뷰 내에서 독립적으로 동작하는 테이블뷰를 먼저 분리하는 게 맞는 순서였다테이블뷰 → 뷰 → VC 순으로 분리테이블뷰를 먼저 분리하면 해당 뷰 컴포넌트만 띄워보기가 가능하다 가장 중요한건 매 단계 빌드 가능한 상태임을 항상 확인하자 ‼️ ..

iOS 2025.05.22

override init vs required init 초기화 차이

인스턴스 초기화 시점과 방식을 책임지는 생성자(Initializer) ✅ override init슈퍼클래스에서 “이렇게 초기화하세요”라고 지정해둔 지정 생성자(Designated Initializer) 를 재정의(override)코드로 뷰나 셀을 만들 때, 스토리보드·XIB가 아니라 init(frame:)(컬렉션뷰 셀) 또는 init(style:reuseIdentifier:)(테이블뷰 셀) 로 호출class MyCell: UICollectionViewCell { override init(frame: CGRect) { super.init(frame: frame) // 슈퍼 초기화 필수 호출 setupUI() // 이후 커스텀 UI 설정 ..

iOS 2025.05.21

[iOS] SnapKit과 AutoLayout

✅ SnapKit이란?SnapKit은 iOS에서 오토레이아웃을 코드로 작성할 수 있게 도와주는 프레임워크기존의 NSLayoutConstraint보다 훨씬 간결하고 직관적으로 레이아웃을 구성// Auto Layout 코드 (기본 방식)NSLayoutConstraint.activate([ label.topAnchor.constraint(equalTo: view.topAnchor, constant: 20), label.centerXAnchor.constraint(equalTo: view.centerXAnchor)])// SnapKit 방식label.snp.makeConstraints { make in make.top.equalToSuperview().offset(20) make.cente..

iOS 2025.05.20