본문 바로가기

도서

(9)
[SwiftUI by Tutorials] Chapter 05: Intro to Controls: Text & Image 1. Text 표시할 텍스트라는 단일 매개 변수를 사용한다. Text("Welcome to Kuchi") Modifiers 텍스트를 표시했으니, 자연스러운 다음 단계는 모양을 변경하는 것이다. 크기, 무게, 색상, 기울임 꼴 등과 같은 다양한 옵션을 사용하여 화면에서 텍스트가 표시되는 방식을 수정할 수 있다. 60포인트로 텍스트를 더 크게 만들려면? Text("Welcome to Kuchi") .font(.system(size: 60)) 추가적으로 텍스트를 굵게 하려면? Text("Welcome to Kuchi") .font(.system(size: 60)) .bold() 추가적으로 글씨색을 빨간색으로 하려면? Text("Welcome to Kuchi") .font(.system(size: 60)) .b..
[SwiftUI by Tutorials] Chapter 04: Testing & Debugging Different types of tests 테스트는 세 가지 유형이 있다. 복잡한 순서대로 단위 테스트, 통합 테스트, UI 테스트이다. 단위 테스트 모든 테스트의 기본이자 다른 모든 테스트의 기초 단위 함수가 주어진 입력을 처리할 때 예상되는 출력을 얻는 것 여러 단위 테스트는 동일한 코드 조각을 테스트할 수 있지만 각 단위 테스트 자체는 단일 코드 단위에만 집중 자주 실행되므로, 빠르게 실행되길 원함 통합 테스트 코드의 여러 부분이 서로 얼마나 잘 작동하는지 확인 앱이 외부 API와 같이 앱 외부 세계와 얼마나 잘 작동하는지 확인 단위 테스트보다 복잡함 일반적으로 실행하는 시간이 오래 걸리기 때문에 실행 빈도가 적음 UI 테스트 가장 복잡한 테스트 사용자 동작을 확인 앱과 사용자간의 상호 작용을 시..
[SwiftUI by Tutorials] Chapter 03: Diving Deeper Into SwiftUI Order of modifiers view에 두 개 이상의 modifer를 적용할 때, 순서가 중요한 경우가 있다. padding과 같은 modifer는 view의 layout이나 frame을 변경한다. background나 border 같은 modifier는 view를 채우거나 감싼다. 일반적으로 view의 layout과 position을 먼저 설정한 후에 view를 채우거나 감싸고자 할 것이다. 예시 Border around padded text Text("...") .padding() .border(Color.purple) Text("...") .border(Color.purple) .padding() border를 먼저 하게 되면, 텍스트의 intrinsic 영역을 둘러싸게 된다. 이후 paddi..
[SwiftUI by Tutorials] Chapter 01, 02: Getting Start Chapter 01: Introduction SwiftUI 특징 Apple 개발의 새로운 패러다임 UIKit에 비하여 훨씬 간단하고 강력 Apple 에코시스템의 크로스 플랫폼 선언적인 특성 Swift가 처음 출시 이후로 진화가 필요했던 것처럼, SwiftUI 역시 개선의 여지가 있음 + 추가 내용 (명령형 vs 선언형 프로그래밍) 명령형(절차적) 프로그래밍은 당신이 어떤 일을 어떻게(How) 할 것인가에 관한 것이고, 선언형 프로그래밍은 당신이 무엇을(What) 할 것인가에 관한 것이다. Wal-Mart 친구가 당신의 집에 집들이를 오기 위해 Wal-Mart에서 선물을 샀습니다. 현재 친구는 Wal-Mart 바로 옆에 있으며, 당신의 집에 어떻게 도달해야 하는지를 전화로 물어봅니다. 이에 관한 명령형, ..
[Object] Chapter 05 - 책임 할당하기 책임에 초점을 맞춰서 설계할 때 직면하는 가장 큰 어려움은 어떤 객체에게 어떤 책임을 할당할지를 결정하기가 쉽지 않다는 것이다. 책임 할당 과정은 일종의 트레이드오프 활동이다. 동일한 문제를 해결할 수 있는 다양한 책임 할당 방법이 존재하며, 어떤 방법이 최선인지는 문맥에 따라 달라진다. 이번에 살펴볼 GRASP 패턴을 통해 책임 할당의 어려움을 해소할 수 있다. GRASP 패턴을 이해하고 나면 응집도와 결합도, 캡슐화 같은 다양한 기준에 따라 책임을 할당하고 결과를 트레이드오프 할 수 있는 기준을 배울 수 있다. 01 책임 주도 설계를 향해 데이터 중심의 설계에서 책임 중심의 설계로 전환하기 위해서는 다음 두 원칙을 따라야 한다. 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 ..
[Object] Chapter 04 - 설계 품질과 트레이드오프 01 데이터 중심의 영화 예매 시스템 객체지향 설계에서는 두 가지 방법을 이용해 시스템을 객체로 분할할 수 있다. 첫 번째 방법은 상태(데이터)를 분할의 중심축으로 삼는 방법이고, 두 번째 방법은 책임을 분할의 중심으로 삼는 방법이다. 데이터 중심의 관점에서 객체는 자신이 포함하고 있는 데이터를 조작하는 데 필요한 오퍼레이션을 정의한다. 책임 중심의 관점에서 객체는 다른 객체가 요청할 수 있는 오퍼레이션을 위해 필요한 상태를 보관한다. 데이터 중심의 관점은 객체의 상태에 초점을 맞추고, 책임 중심의 관점은 객체의 행동에 초점을 맞춘다. 훌륭한 객체지향 설계는 데이터가 아니라 책임에 초점을 맞춰야 한다. 이유는 변경과 관련이 있다. 객체의 상태는 구현에 속한다. 구현은 불안정하기 때문에 변하기 쉽다. 상태..
[Object] Chapter 03 - 역할, 책임, 협력 01 협력 협력이란 어떤 객체가 다른 객체에게 무엇인가를 요청하는 것이다. 한 객체는 어떤 것이 필요할 때 다른 객체에게 전적으로 위임하거나 서로 협력한다. 즉, 두 객체가 상호작용을 통해 더 큰 책임을 수행하는 것이다. 메시지 전송을 통해 자신의 요청을 전달할 수 있다. 메시지를 수신한 객체는 메서드를 실행해 요청에 응답한다. 여기서 객체가 메시지를 처리할 방법을 스스로 선택한다는 점이 중요하다. 외부 객체는 메시지만 전할 수 있을 뿐, 메시지를 어떻게 처리하는지는 메시지를 수신한 객체가 결정한다. 이는 객체는 자신의 일을 스스로 처리하는 자율적인 존재라는 것을 의미한다. 객체를 자율적으로 만드는 가장 기본적인 방법은 내부 구현을 캡슐화하는 것이다. 정리하자면, 자율적인 객체는 외부의 도움이 필요한 경..
[Object] Chapter 02 - 객체지향 프로그래밍 01 협력, 객체, 클래스 객체지향은 객체를 지향하는 것이다. 1. 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라. 클래스의 윤곽을 잡기 위해서는 어떤 객체들이 어떤 상태와 행동을 가지는지를 먼저 결정해야 한다. 객체를 중심에 두는 접근 방법은 설계를 단순하고 깔끔하게 만든다. 2. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다. 객체는 다른 객체에게 도움을 주거나 의존하면서 살아가는 협력적인 존재다. 02 도메인의 구조를 따르는 프로그램 구조 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야를 도메인(domain)이라고 부른다. 객체지향 패러다임이 강력한 이유는 요구사항을 분석하는 초기 단계부터 프로그램을 구현하는 마지막 단계까지..