일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 함수형프로그래밍
- Swfit
- 고차함수
- fp
- 아이폰프로그래밍
- protocol
- DesignPattern
- 개발
- 네이밍
- 함수형패러다임
- POP
- 이름
- IOS
- 인터페이스
- 디자인패턴
- 클린소프트웨어
- 문법
- Solid
- OOP
- 부스트코스
- 의도
- 객체지향프로그래밍
- 클린코드
- iOS프로그래밍
- CleanCode
- interface
- 의존성
- 개발자
- 협업
- SWIFT
- Today
- Total
밤에 쓴 코드
Xcode Debug LLDB : 디버거 실행 제어 Continue (lldb) continue (lldb) c "계속해서 진행, 정지된 프로그램 진행" *Step Over * (lldb) next (lldb) n "다음 줄 로 진행 ,현재 Frame 에서 다음 단계로- F6" Step In (lldb) step (lldb) s "현재 Method 내부로 이동 - F7" Step Out (lldb) finish (lldb) fin "현재 커서 Method 에서 탈출 - F8" 변수 검사 전역 변수 검사 (lldb) target variable [변수명] (lldb) ta v [변수명] "특정 변수 출력하기" (lldb) target variable (lldb) ta v "static/global 전역변수..
의미있는 이름 의도를 분명히 밝혀라 명확한 이름이 좋다 짐작하기 쉽게 함축성을 가진 코드는 의도를 숨긴 코드이다. 단순성과 함축성은 다르다. // 함축적 -> 무슨 일을 하는지 구체적으로 드러나지 않은 이름 func getList() -> [String] { } // 짐작하기 쉬운 이름 func getNameOfFriendsList()->[String]{ } 올바른 정보 유사한 개념은 유사한 표기법을 사용한다. func add(_ item:Int ){ // 배열에 추가하는 로직 } func append(_ item:Int ){ // 배열에 추가하는 로직 } 같은 기능을 수행하나 표기가 다른 건 잘못된 정보전달의 예 이다. 널리쓰이는 단어를 다른 의미로 사용하는 것도 옳지않다 func getFriendLi..
Optional 변수에 값이 존재하지 않을 수도 있다는 것을 명시한다. 다른 말로 하면 옵셔널이 아닌 변수는 무조건 값을 가져야한다. 값이 꼭 필요한 변수에는 옵셔널이 아닌 타입으로 선언함으로서 , 사전에 nil이 들어오는 걸 막을 수 있다. 또 , Optional 로 선언함으로서 , nil이 들어올 수 있으니 , 대처가 필요하다는 것을 프로그래머에게 인지 시켜줄 수 도 있다. Optional 은 제네릭 타입을 지원하는 열거형이다. enum Optional{ case .some // 값이 존재하는 경우 case .none // nil 인 경우 } Optional = Int? // 동일한 표현이다 optional 은 .some/.none 두가지경우 중 하나를 를 무조건적으로 가지는 열거형 이다. Optio..
프로토콜 위키백과 통신 프로토콜은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 **규칙 의 체계이다.** 예시 swift 프로토콜은 규칙을 표현한다는 점에서 비슷하지만 조금 다른 의미로 사용된다. 내가 좋아하는 yagom 은 명찰,공고 를 통해 이야기를 해주었다. 프로토콜은 일종의 명찰이다 . 어떤 클래스(구조체)가 특정 프로토콜을 채택하게되면 프로토콜이 요구하는 사항들을 준수해야한다. 따라서 특정프로토콜을 구현한 클래스를 통해 생성된 오브젝트는 해당 프로토콜에서 요구되는 능력들을 수행할 수 있음을 신뢰할 수 있다. struct Patient { let helper : Any } let 부엉이 = String() let 환자 = Patient(helper: 부엉이)한 환자가 있습니다. ..
Struct : 구조체 struct Cat{ // 속성 let name : String var age : UInt // 실체화 init(name:String , age:UInt = 1){ self.name = name } // 동작 func howl(){ print(name+" 야옹") } } 객체를 만들기위해 추상화되어있는 점에서 class와 유사합니다. 유사한 두개가 존재한다는 것은 유사하지만 차이가 있고 , 각기 다른 목적으로 설계 되었다는 것을 의미합니다. 특징적인 차이 class에서는 가능하지만struct에서는 가능하지 않은 것 상속 타입캐스팅 참조에 의한 전달 stack CPU가 스택 메모리를 효율적으로 구성하기 때문에 스택 변수를 읽고 쓰는 속도가 매우 빠릅니다. 스택에 저장할 수있는 변수의..
용어정리 컴퓨터 입력장치를 통해 입력을 받고 , 데이터를 출력하는 장치 프로그램 어떤 특정 작업을 위해서 지시사항(명령)들이 순차적으로 나열되어있는 집합체 추상화 구체화의 반대되는 개념 하나하나의 실제들에게서 세세한 정보는 무시하고 , 공통적인 속성을 모아서 개념적으로 표현하는 것 현실의 물체를 머리에 넣을때 사람들은 추상화를 해서 머리에 넣는다 . 눈이 부리부리하고 밤에 활동하며 날개가있고 , 머리가 뾰족튀어나오고 , 부엉부엉 울고 ... 인 동물을 '부엉이'라고 기억한다. 일반화 여러물체의 공통적인 속성을 모은다는 점에서 비슷하나, 여러 물체를 대표하는 것이 개념이 아닌 실체 라는것이 차이가 난다. 타입 데이터를 식별하는 단위 형태,생김새 함수 수학에서의 함수는 입력에 따른 출력이 존재..
왜 ? 개발자는 소프트웨어에 세상을 표현한다. 게임으로 이해해도 좋을 것같다. 세상은 메모리공간이고 그 곳에 여러 생물/무생물 : 객체 들 을 만들어 내는 것은 개발자의 몫이다. 앞으로의 메모리 공간에는 수많은 종류의 객체들이 존재할 것이다 . 재사용성을 위해 클래스로 공통적인 속성과 동작을 정의해두고 , 각각의 객체들은 공통적인 속성과 동작은 가지고있으나 , 각기 내는 결과와 반환 값은 다를수있다 ex) 속성 - 무기는 모두 공격력을 가지고는 있으나 , 같은 공격력을 가지고 있지는 않다. 동작 - 동물은 모두 이동하나 , 고양이는 4족보행 , 사람은 직립보행을 한다. 클래스 의 구조 class 무기{ var 무기명:String var 공격력 :UInt init(무기명:String , 공격력:UInt){..
enum switch 구문을 사용시 수 많은 값이 입력될수 있음을 예측한다. enum을 이용하면 더 적은 사항을 컴퓨터가 고려할 수 있습니다. 하나로 연관된 주제를 하나의 타입으로 묶어서 사용 조금더 안전한 방식으로 다룰 수 있게 해준다. 상황 제한된 값 만 입력받고 싶을 때 제한된 값만 선택할수 있게 제한하고싶을 때 예시 // 열거형 : rawValue enum Unit : String { case cm = "cm" case m = "m" case inch = "inch" case yard = "yard" case g = "g" case kg = "kg" case oz = "oz" case lb = "lb" // 함수도 내포할수 있다 func defaultUnit ()->Unit{ switch self..