일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SWIFT
- OOP
- 협업
- 개발
- Swfit
- protocol
- Solid
- 개발자
- interface
- 클린코드
- 객체지향프로그래밍
- 부스트코스
- 함수형패러다임
- 네이밍
- 인터페이스
- IOS
- 고차함수
- DesignPattern
- CleanCode
- 의존성
- iOS프로그래밍
- 클린소프트웨어
- 의도
- 디자인패턴
- 함수형프로그래밍
- fp
- 아이폰프로그래밍
- 이름
- 문법
- POP
- Today
- Total
밤에 쓴 코드
출처 https://theswiftpost.co/swifty-tips/ Swifty Tips ⚡️ 25 Apr 2017 Subtle best practises that Swift developers are keeping secret. 내가 iOS 개발자를 시작할 때, 나는 대기업에서 사용되는 best practises에 대해서 항상 궁금했다. 그들의 프로젝트 구조는 어떻게 생겼을까? 그들이 사용하는 아키텍처는 뭘까? 어떤 서드파티 라이브러리가 인기 있을까? 다른이들의 경험으로 부터 해결하고, 이미 해결된 문제에 대해서 시간을 낭비하지 않고 싶은 열망이 있었다. 시작한 이후 4년이 흐르고, 나는 현재 많은 클라이언트와 함께 일을 하고 있고, coding practises에 대해서 우리팀은 많은 영리한 사람..
URLSession Tutorial: Getting Started https://www.raywenderlich.com/3244963-urlsession-tutorial-getting-started 서버로 부터 데이터를 가져오거나 우리의 소셜 미디어 상태를 업데이트하거나, 디스크로 리모트파일을 다운로드하는 작업 모두, 네트워크요청은 마법을 만들어낸다. 네트워크 리퀘스트를 위한 많은 요구사항을 돕기위해서, 애플은 컨텐트를 업로드하고 다운로드하기위한 네트워킹 API를 가진URLSession 을 제공한다. 이 튜토리얼에서, 우리는 Half Tunes 을 만드는 법을 배울 것이다. 이 앱은 iTunes Search API를 이용해서 30초 미리듣기를 다운로드 한다. 그리고 이 앱이 백그라운드 작업을 지원하고, ..
나는 현재 부스트코스 에이스로 활동중이다. MyAlbum을 진행하면서 느낀 점이 많았다. 새로운 프레임워크 'Photos'를 접하니 내가 모르는 것 투성이었다. 막상 모르는 클래스를 하나 접하면 학습을 해야했다. 다뤄야할 클래스가 너무 많아지다보니 모든 문서를 읽을 수 는 없다고 느꼈다. important 랑 내가 사용할 메소드에 대한 설명만 간단히 보고, 구현을 했다. 개인 적으로 아쉬웠던 점이 있다면, UIKit 문서보다는 자세한 사항이 없었고, 개발자가 사용하기는 편리하지만, 왜? 이렇게 되는 지에 대한 공부거리를 모두 감춰두어서, 그냥 사용할 수 밖에 없는 게 많이 아쉬운 것같다. 처음에는 단순히 생각했으나, 생각보다 구현해야할 세세한 UI기능이 많았고, 그래서 뷰 컨트롤러가 엄청 커지는 경험을 ..
현재 부스트코스에이스를 진행중인 학생이다. 네트워크는 클라이언트와 서버 사이의 통신에서 절대 빠질수없다. 하지만 이게 결코 쉽지않은 난관이다. 그중하나가 데이터를 주고받는 방법을 몰랐기때문이었다. Apple foundation 에는 JSONDecoder를 이용해서 JsON데이터를 스위프트의 타입으로 사용할 수 있게끔하는 클래스를 제공한다 . 이부분을 학습하며 CodingKey도 알게되었다. 실제 디코딩과 인코딩 될때 사용될 키와 타입의 프로퍼티명의 차이가 필요할 때 사용하면 , 좀 더 내가 원하는 모양으로 데이터파싱이 가능했다. 공부하면서 몇개 깨달은 게 있다면, Observable을 구현함으로써 반응형으로 짜려고 해보았는데, 솔직히 분리는 되지만 코드의 가독성과 깨끗함을 해치고있다고 느껴서 좀 더 훈련..
현재 부스트 코스 에이스 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 ..