안녕하세요. 도미닉입니다. TDD 를 알고는 있었지만 제대로 사용하기는 어렵다는 생각을 했습니다. 밥 아저씨도 캔트 백 아저씨한테 찾아가서 TDD 를 배웠다고 들었고 혼자 TDD 를 할 때 제대로 할 수 있을까 하는 두려움이 들었기 때문입니다. TDD 를 공부하고 혼자서 사용하는 분들이 많다는 것을 알게 되었고 피드백을 받으며 사용해보고자 이 포스팅을 작성합니다. 많은 지적과 격려 부탁드립니다. 첫번째 요구사항은 고정된 요금 방식입니다. 예를 들면 10분에 500원이라고 하겠습니다. 1. 실패하는 테스트 코드 작성 Fare 라는 객체가 없어서 오류가 발생합니다. 2. 통과하도록 최대한 빨리 코드 작성 Fare 라는 객체를 만들어주었습니다. minute 과 amount 를 속성으로 가지고 있으며 minut..
안녕하세요. 도미닉입니다. 오늘은 SOLID 에 대해 정리해보겠습니다. SOLID 는 5가지 원칙을 가지고 있습니다. 하나씩 예시를 들어가며 설명해드리겠습니다. 1. SRP (Single Responsibility Principle) 첫번째는 단일 책임 원칙입니다. 작성한 클래스는 하나의 기능과 책임을 가져야만 한다는 원칙입니다. 아래와 같이 기타 구조체를 생성했다면 SRP 원칙에 위반되는 것입니다. 왜냐하면 price 부터 maker, type, model, backWood, topWood, stringNum 은 기타의 모델과 상태에 따라 달라질 수 있기 때문입니다. 수정이 일어날 때마다 Guitar 클래스를 변경해주어야하므로 안정적이지 않습니다. 아래와 같이 SRP 원칙을 적용할 수 있습니다. 기타의..
안녕하세요. 도미닉입니다. 함수형 프로그래밍에 대해서 정리해봤습니다. 우선 함수형 프로그래밍과 절차형 프로그래밍은 아래와 같이 정리해봤습니다. 함수형 프로그래밍: 함수를 일급 객체로 생각하는 프로그래밍 기법 절차형 프로그래밍 : 위에서부터 순차적으로 코드를 실행하는 프로그래밍 기법 함수형 프로그래밍은 순수 함수를 사용하여 순차적으로 함수를 수행해나가며 프로그래밍이 실행되는 기법입니다. 순수함수는 상태값이 없기 때문에 언제나 같은 값을 기대할 수 있습니다. 순수함수를 사용하여 여러번 호출이 되거나 상태가 변경된 상황에서 호출이 되더라도 같은 식으로 동작합니다. 데드락이나 동시에 여러번 호출 되었을 때 상태가 달라지는 것으로부터 자유롭습니다.
안녕하세요. 도미닉입니다. 오늘은 클로저에 대해서 알아보겠습니다. 클로저는 이름 없는 함수라고 할 수 있습니다. 이름 없는 함수가 굳이 왜 필요한가? 라고 의문을 가질 수 있습니다. 이러한 클로저는 매개변수와 리턴 타입, 고차함수, 변수 등에 자유롭게 사용할 수 있습니다. 클로저의 기본 타입은 아래와 같습니다. { (parameters) -> return type in statements } 함수와 비교하자면 앞에 func 함수이름 부분이 빠진 것만 빼면 크게 다르지 않은 것을 알 수 있습니다. 아래 소스는 sorted 함수에 매개변수로 클로저를 사용했습니다. reversedNames = names.sorted(by: { (s1: String, s2: String) -> Bool in return s1 ..
안녕하세요. 도미닉입니다. 오늘은 Enum 에 대해서 알아보겠습니다. Enum 은 항목을 묶어서 표현할 수 있는 타입입니다. 예를 들어 무게에는 kg, g, mg 등이 있습니다. 아래와 같이 표현할 수 있습니다. Enum 을 선언할 때는 첫 글자를 대문자로 선언해주어야 합니다. 이러한 Enum (열거형) 을 사용하면 장점이 weight 라는 단위는 mg, g, kg 중에 하나라고 단정지을 수 있습니다. 이러한 점이 별거 아닌 것 같아보일 수 있겠지만 weigth 라는 변수, 상수가 다양한 타입의 무궁무진한 값을 가질 수 있는 것에서 우리가 예측할 수 있는 값만 가질 수 있게 된다는 것은 엄청난 차이점이고 중요한 점이라고 생각합니다. 아래에서 Enum 의 다양한 사용방법을 알아보겠습니다. 1. CaseIt..
안녕하세요. 도미닉입니다 오늘은 패턴에 대해서 알아보겠습니다. 패턴이란 소스의 양을 줄여서 쓰고 읽기 쉽게 정해놓은 구조 라고 생각할 수 있습니다. 패턴 매칭이란. 코드에서 패턴을 찾아내고 활용하는 것이라고 할 수 있겠습니다. 패턴에는 두가지 큰 유형이 있습니다. 모든 종류의 값에서 성공적으로 동작하는 패턴과 런타임 안에 지정된 값에 따라서 동작하지 못하는 패턴입니다. 첫 번째 종류의 패턴은 단순 변수, 상수 및 옵셔널 바인딩에서 값을 소멸시키는 데 사용됩니다. 여기에는 와일드 카드 패턴, 식별자 패턴 및 이를 포함하는 값 바인딩 패턴 또는 튜플 패턴이 포함됩니다. 이러한 패턴에서 타입 지정하여 특정 타입의 값만 일치하도록 제한 할 수 있습니다. 두 번째 종류의 패턴은 전체 패턴 일치에 사용되며, 여기서..
다형성 : 프로토콜을 준수하거나 클래스를 상속 받아서 서로 다른 객체들에 해당 기능이 있다고 예측해서 사용 가능한 것 프로토콜 : 조건, 딱지 상속 : 사이드 이팩트 많음 익스텐션(Extensions) : 사이드 이펙트 적음 사이드 이팩트 : Overloading(오버로딩) : 같은 이름의 메소드를 매개변수가 다르게 여러번 선언할 수 있는 것 Overriding(오버라이딩) : 상위 클래스에서 선언한 메서드를 하위 클래스에서 재정의해서 사용하는 것 추상화 : 특징을 뽑아내는 것 Indirection (간접 참조) : 서브스크립트 : literal(리터럴) : Closere(클로저) : Map(맵) : Equatable( 정규표현식 메서드 : 객체 내의 함수 초기상태 : 프로퍼티(property) : 객체..
1. 강제 언레핑 사용하지 마세요. 2. 커밋은 변경하는 최소 작업단위로 작게 나눠야합니다. 3. 특정한 함수 내부에서 exit() 처리하는 것은 좋지 않습니다. 4. 메서드 이름은 동사로 정하세요. 5. enum을 포함해서 타입을 만들때는 대문자로 시작하도록 만드는게 규칙입니다. 6. 서로 상관없는 값이니까 중첩해서 if 구문을 넣을 필요는 없습니다. 7. 변수 이름과 함수 이름이 동일한 것은 어색하네요. 8. inputFromUser()는 (Int, Int) 튜플을 리턴하는데, ladderMake(humanNumber, heightMax)는 매개변수를 따로따로 전달하는 이유가 궁금합니다. 튜플을 그대로 넘기는 건 왜 선택하지 않았나요? 9. 코드리뷰는 제가 일방적으로 고치라고 지적하는 방식이 아닙니다..
안녕하세요. 도미닉입니다. 오늘은 오버로딩과 오버라이딩에 대해서 알아보겠습니다. 오버로딩(overloading) 이란 같은 이름의 메소드를 매개변수가 다르게 여러번 선언할 수 있는 것을 의미합니다. 오버로딩에는 생성자 오버로딩과 메소드 오버로딩이 있습니다. init 생성자를 매개변수 숫자를 다르게 해서 두번 선언했습니다. 이러한 것을 생성자 오버로딩이라고 합니다. eat 메서드를 매개변수 숫자를 다르게 해서 두번 선언했습니다. 이러한 것을 메서드 오버로딩이라고 합니다. 오버라이딩(overriding) 은 상위 클래스에서 선언한 메서드를 하위 클래스에서 재정의해서 사용하는 것을 의미합니다. 위에 오버로딩의 예제를 들었던 소스에서 People 클래스의 eat 메서드를 선언했었습니다. Student 클래스는 ..
안녕하세요. 도미닉입니다. 프로토콜과 다형성에 대해 정리해보겠습니다. 프로토콜은 특정 역할을 하기 위해 메서드, 프로퍼티 등을 정의하는 것입니다. 프로토콜을 채택하면 해당 프로토콜에서 정의되있는 메서드, 프로퍼티를 무조건 구현해주어야 합니다. 위와 같이 Food 라는 프로토콜에 eat 메서드를 정의하였습니다. 스파게티 구조체가 Food 프로토콜을 채택하였으나 eat 메서드가 존재하지 않아서 오류가 발생하였습니다. 동그라미를 클릭해서 오류 해결을 자동으로 요청하니 아래와 같이 eat 메서드가 생기고 구현부가 생성되었습니다. 위와 같이 스파게티, 햄버거, 피자 구조체를 Food 프로토콜을 채택해서 작성했습니다. 이제 스파게티, 햄버거, 피자는 Food 프로토콜을 따르기 때문에 무조건 eat 메서드가 있다고 ..
- Total
- Today
- Yesterday
- Swift
- 배열
- Xcode
- terascan
- 프로그램
- 영어
- database
- 함수
- 프로그래밍
- 반복문
- 애플
- 단어
- 뇌를 자극하는 C프로그래밍
- 포인터
- C
- 왕초보 영단어1
- 스위프트
- 시원스쿨
- IOS
- 뇌를 자극하는 C 프로그래밍
- 매트랩
- Matlab
- 리눅스
- 연습문제
- Apple
- 테라스캔
- 데이터베이스
- MySQL
- exercise
- 형용사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |