본문 바로가기

전체 글56

[TIL] 20230127: Type Properties 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. Type Properties 인스턴스 프로퍼티는 특정 타입의 인스턴스에 속해있는 프로퍼티이다. 특정 타입의 인스턴스를 새로 만들 때마다, 다른 인스턴스와는 독립적인 그 자신만의 프로퍼티 값을 가지게 된다. 특정 타입의 인스턴스에 속하는 것이 아닌, 타입 그 자신에 속하는 프로퍼티를 정의할 수도 있다. 얼마나 많은 인스턴스를 만들든지와 상관 없이, 이러한 프로퍼티에 대해서 단 하나만의 사본이 존재하게 될 것이다. 이러한 종류의 프로퍼티를 타입 프로퍼티라고 부른다. 타입 프로퍼티는 모든 인스턴스가 사용할 수 있는 상수 프로퍼티나 특정 타입의 모든 인스턴스에서 보편적으로 값을 저장하는 변수 프로퍼티와 같이, 특정 타입의 모든 인스.. 2023. 1. 28.
[TIL] 20230126: SOLID 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. SOLID 원칙 SOLID 원칙은 객체 지향 프로그래밍을 위한 다섯가지 기본 원칙이다. 이 원칙을 지킴으로써 유지보수가 쉽고, 유연하고, 확장이 쉬운 소프트웨어를 만들 수 있다. S(SRP) 단일 책임 원칙 (Single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. O(OCP) 개방-폐쇄 원칙 (Open/closed principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. L(LSP) 리스코프 치환 원칙 (Liskov substitution principle) 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야.. 2023. 1. 28.
[TIL] 20230124: Generics 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. Generics swift 표준 라이브러리의 대부분은 제네릭 코드로 빌드된다. 대부분이 인지하지 못하고 있지만, Language Guide 전체에서 제네릭을 사용하고 있다. 예를 들어 swift의 어레이와 딕셔너리 유형은 모두 제네릭 컬렉션이다. Int값을 포함하는 배열, String값을 포함하는 배열 혹은 실제로 swift에서 생성할 수 있는 다른 유형의 배열을 만들 수 있다. 마찬가지로 지정된 유형의 값을 저장하는 딕셔너리를 만들 수 있으며 해당 유형에 제한이 없다. 다음과 같은 func가 있다고 해보자. func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA.. 2023. 1. 26.
[TIL] 20230123: unit test, TDD, filter, reduce 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 유닛 테스트 Unit Test What is Unit Test? 유닛 테스트란, 유닛 단위로 진행되는 테스트를 말한다. 하나의 함수나 메서드의 단위로 독립적으로 진행된다. 내가 구현한 기능이 제대로 작동하는지를 검증하는 절차이다. 이 테스트는 개발자에 의해 진행되기도 하지만 독립적인 tester에 의해서 진행되기도 한다. Why we need Unit Test? 빠른 리팩토링 반영과 빠른 테스트 진행 코드의 확장이나 리팩토링시 안정성을 확보한 채 대응 가능 How can I implement Unit Test? 예상값과 결과값을 비교하는 형태로 주로 진행이 된다. given-when-then의 단계를 거친다. given: 테.. 2023. 1. 23.
[토요스터디A반] 20230121: UML을 바탕으로 코드 작성하기 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. import Foundation class Person { var name: String var money: Int var coffee: Coffee? init(name: String, money: Int) { self.name = name self.money = money } func buy(_ menu: CoffeeMenu, at shop: CoffeeShop) { if money >= menu.price { let coffee = shop.order(menu) money -= menu.price print("맛있는 \(coffee) 냠냠") print("잔액이 \(money)원 남았습니다.") } else { print.. 2023. 1. 23.
[TIL] 20230119: 데이터전달(델리게이트, 노티피케이션센터) 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 데이터 전달 데이터를 전달 해줄 수 있는 여러 가지 방식을 알아보도록 한다. 그러기 위해서 프로젝트를 하나 만들어봤다. 두개의 뷰로 구성했다. 첫번째 뷰에는 라벨이 있고 버튼이 있다. 버튼을 누르면 두번째 뷰를 모달로 띄워준다. 두 번째 뷰에는 닫기 버튼과 텍스트필드가 있다. 텍스트 필드에 내용을 입력하고 닫기 버튼을 누르면 첫번째 뷰에 뜨게 할 생각이다. 이런 식으로 델리게이트 첫번째 뷰 컨트롤러 // FirstViewController.swift import UIKit protocol SendDataDelegate { func fetchString(text: String) } class FirstViewController.. 2023. 1. 21.