일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- CleanCode
- 함수형프로그래밍
- 부스트코스
- 디자인패턴
- DesignPattern
- 인터페이스
- 의존성
- 클린코드
- 개발
- Solid
- 고차함수
- OOP
- 문법
- 의도
- 협업
- 객체지향프로그래밍
- iOS프로그래밍
- POP
- fp
- 개발자
- 함수형패러다임
- protocol
- Swfit
- 네이밍
- 아이폰프로그래밍
- 이름
- SWIFT
- interface
- IOS
- 클린소프트웨어
- Today
- Total
목록2019/07 (7)
밤에 쓴 코드
현재 부스트 코스 에이스 2019 1기에 참여 중이며, 현재 2번째 프로젝트 과제 회원가입 화면을 구현하며, 느낀 점을 정리하고자 글을 작성하였습니다. 특정 씬 별로 기능을 구현하고 뒤돌아 봤을 때, 느낀점을 몇 가지로 나누어 적어보려고 한다. 진행한 이후 내 자신에 대해 아쉬웠던 점 프로젝트를 진행함에 있어서 계획이 없이, 보이는 기능을 그때 그때 구현하였다. 하나의 뷰 컨트롤러를 구현하다가 비슷한 기능이 다른 뷰컨트롤러에도 있으니 그부분도 동일하게 구현하고 다시 이전에 구현하던 뷰 컨트롤러로 돌아와서 구현을 했다. 이렇게 그때 그때 기능을 구현하다보니 전체적인 구조를 생각하지 못했다. 개인적으로 끝나고 하는 생각이지만, 3개의 씬 모두, 자신의 서브 뷰(UIControl)들에 대한 검증이 있었다. 이..
클래스 클래스는 데이터와 연산으로 이루어진 코드 블럭이다. 깨끗한 클래스, 응집도높은 클래스에 대한 고민을 해보자 클래스는 작아야한다 클래스를 만들 때 첫번째 규칙은 크기이다. 클래스는 작아야한다. 하지만 얼마나 작아야 하는지가 중요하다. 여기서 말하는 크기는 물리적인 크기보다는 책임의 크기이다. 책임을 적게 가진다는 것을 어떻게 표현할 수 있을까? 클래스의 이름은 클래스의 책임을 표현한다. 이름에 드러나는 책임이 모호하거나, 많은 책임을 내포한다면, 여러 책임을 가진 클래스일 확률이 높다. 책임을 분리하는 것은 클래스가 변경될 수 있는 이유를 분리하는 것이고, 관심사를 분리하는 것이다. 응집도 클래스에는 인스턴스 변수가 많아서는 안된다. 또 메소드는 적어도 하나이상의 인스턴스 변수를 내부에서 사용해야한..
Outlet Outlet은 하나의 오브젝트에서 다른 오브젝트의 참조를 가지는 프로퍼티이다. reference는 인터페이스빌더를 통해 기록된다. Outlet들과 포함하는 오브젝트간의 연결은 nib 파일로 부터 unarchived(기록저장 용도로 쓰다가 실제로 앱에서 사용될 때 ) 될 때마다 재정립된다 포함하고 있는 오브젝트는 Outlet을 IBOutlet이라는 타입한정자와 함께 약한참조의 형태(weak)로 가지고 있다. Outlet은 오브젝트의 캡슐화된 데이터의 일부기때문에 프로퍼티의 형태로 있어야한다. 오브젝트와 Outlet의 연결은 nib파일에 기록된다. nib파일이 로드될 때, unarchived 되고, 이 관계는 재정립된다. @IBOutlet이라는 태그가 정의부에 적용된다. 왜냐하면 인터페이스 빌..
Segue 하나의 Scene 으로부터 다른 Scene으로의 전환을 보여주는 연결입니다. Segue Type Symbol Type Description Show (Push) 이 segue는 target view controller의 showViewController:sender: 가 실행된다. 일반적으로는 source View Controller위에 새로운 컨텐트가 모달로 보여진다. 몇몇 뷰컨트롤러들은 해당 메소드가 재정의 되어있어서 다른동작을 한다. UIKit은 targetViewControllerForAction:sender:메소드로 source View Controller 를 찾는다. 예) NavigationViewController 는 새로운 뷰컨트롤러를 네비게이션 스택에 push 한다. Show ..
ViewController의 특징과 생명주기 Responsibility (뷰컨트롤러의 책임) 주요한 데이터의 변화에 응답으로 뷰들의 컨텐트들을 업데이트 한다. 뷰들과 함께 사용자와의 대화에 응답한다. - 이벤트 핸들링 뷰들의 사이즈 재조정과 전반적인 인터페이스의 레이아웃을 관리한다. 다른 객체(뷰컨트롤러 등)들과 함께 앱을 구성한다. ViewController Type 뷰컨트롤러는 두가지 타입이 존재한다. 일반적으로 흔히 보는 인터페이스 빌더로 생성시 기본으로 생성되는 ViewController는 Content View Controller에 해당한다. NavigationViewController / TabBarViewController 처럼 여러 개의 View Controller를 제어하는 뷰 컨트롤..
UITabBarController, UITabBar UITabBar 일반적으로 하단 모서리에 위치한다. radio - style 을 가졌다. - 하나가 선택되고 다중선택을 불가능하다. UITabBarItem을 하나 이상 가진다. backGround 이미지를 설정할 수 있다. tintColor 를 설정할 수있다 TabBar를 직접 생성하게 되면 TabBar 내의 TabItem 을 직접 추가 삭제 변경, 선택에 대한 응답을 제어하기 위해서는 delegate 가 필요합니다. UIToolBar ToolBar 는 작업 집합들을 관리한다.현재 뷰와 관련된 작업을 보여준다. UITabBar TabBar는 앱의 모드를 관리하고, 앱 전체와 관련이 있다. Attributes Description Associated Pr..
단위테스트 개념 테스트가 가능한 (최소)단위-모듈로 나누어진 소프트웨어 내에서 결함을 찾고 기능을 검증하는 활동 TDD (테스트 주도 개발) 실제 코드를 직성하기 전에 실패하는 테스트 코드를 작성한다. 실패는 하지만 컴파일은 성공할 수 있게끔 작성한다. 테스트를 통과할 정도의 간단한 코드로 실제 코드를 작성한다 위의 3가지 원칙을 차례대로 지키면서 개발을 진행하며, 사이클을 계속적으로 수행한다. 그러면 테스트는 어떻게 작성해야 할까? '테스트 코드는 깨끗하게 작성하라' 라고 책에서 강조를 한다. 더러운 테스트 코드는 어떤 피해를 주는 지 한번 보자. 테스트 코드도 코드이다. 실제 코드가 변하게 되면, 테스트코드도 같이 변해야 한다. 테스트 코드가 더럽다면 또는 복잡하다면, 늘어가는 테스트 ..