일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Observer Pattern
- 추상팩토리패턴
- 디자인패턴 #
- compose
- 디자인패턴
- ㅓ
- android designsystem
- El
- material3
- 안드로이드 디자인시스템
- Kotlin
- factory method
- 코틀린
- 싱글톤
- Singleton
- Design Pattern
- 옵저버 패턴
- 함수형프로그래밍
- PrototypePattern
- designPattern
- Functional Programming
- 빌터패턴
- r
- F
- builderPattern
- 팩토리 메소드
- Abstract Factory
- ㅋㅁ
- 추상 팩토리
- 프로토타입 패턴
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
1장 - 코틀린이란 무엇이며, 왜 필요한가? 본문
kotlin In Action 2end Edition을 학습후 중요한 부분과 기억해야될 부분을 기록합니다.
1.1 코틀린 맛보기.
data class Person( // 데이터 클래스
val name: String, // read only 프로퍼티
val age: Int? = null // null이 가능한 타입과 파라미터 기본값
)
fun main(){ // 최상위 함수
val persons = listOf(
Person("영희", age= 29), // 이름 붙은 파라미터
Person("철수"), // 트레일링 콤마
)
val oldest = persons.maxBy { // 람다식
it.age ?: 0 // null값에 적용된 엘비스 연산자
}
println("가장 나이가 많은 사람:$oldest") //문자열 템플릿
}
1.2 코틀린의 주요 특성.
코틀린은 다중 패러다임 언어.
- 정적 타입 지정 언어
- 객체지향 언어
- 함수형 언어
- 코루틴의 구조화된 동시성
타입지정 언어
- 프로그램의 모든 식(express)의 타입을 컴파일 시점에 알수있다. (런타임중에 버그가 일어나 프로그램이 중단되지 않음)
- 컴파일러가 문맥을 고려해 변수타입을 결정하는 타입추론 기능
- 코틀린이 "널이 될 수 있는 타입 지원" 하여 "널 포인터 예외가 발생"하는지 여부를 컴파일 시점에 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.
함수형 프로그래밍과 객체지향 프로그래밍의 조합
함수형 프로그램의 핵심 구성요소.
- first-class function
- 함수를 일반적인 값 처럼 다룰수 있음(변수에 저장, 인자로 전달, 함수를 반환) 람다, 멤버참조..
- immutability(불변성)
- 생성후 내부 상태가 절대로 변경되지 않는 객체를 사용함.(data class)
- side-effect 없음
- 입력이 같으면 항상 같은 결과반환
- 다른 객체의 상태를 변경하지 않으며 함수 외부환경에 상호작용하지 않는 순수함수(.filter{ ... } .map{ ... } .sortedBy{ ... })
함수형 프로그램 장점
- 코드중복을 피할수있음
- 안전한 동시성
- 테스트의 용이성
코루틴을 이용한 동시성과 비동기코드의 구조적 사용
suspendable computation (일시 중단 가능한 계산)
- 코드가 자신의 실행을 잠시 중단시켰다가 나중에 작업을 계속 수행할 수 있다.
suspend fun processUser(credentials: Credentials){
val user = authenticate(credentials)
val data = loadUserData(user)
val profilePicture = loadImage(data.imageID)
...
}
suspend fun authenticate{ ... }
suspend fun loadUserData{ ... }
suspend fun loadImage{ ... }
3개의 네트워크 요청은 순서대로 실행되며, processUser 함수의 실행은 일시 중단되고 결과를 기다리게 된다.
핵심은 이 코드가 실행되면서 스레드는 블록되지 않는다는 것이다.
1.3 코틀린이 자주 쓰이는 분야
- 1.3.1 백앤드
- 1.3.2 안드로이드
- 1.3.3 다중플랫폼.
1.4 코틀린의 철학
1.4.1 코틀린은 실용적인 언어다.
- 실제문제를 해결하기 위해 만들어진 언어
1.4.2 코틀린은 간결한다
- 개발자는 새로운 코드를 작성하는 시간보단, 기존 코드를 읽는 시간이 더 길다.
- 코드의 의미를 최대한 전달하고 프로그램 언어가 요구하는 구조를 만족시키기 위한 요소를 줄임
(여러가지 번거로운 준비 코드 암시적 제공, 강력한 타입추론 등)
- 기능이 풍푸한 표준 라이브러리 제공.
1.4.3 코틀린은 간결한다
- 프로그램에서 발생할 수 있는 오류중에서 일부 유형의 오류를 프로그램 설계가 원칙적으로 방지해 준다.
JVM에서 실행 --> 메모리 안정성을 보장. 버퍼 오버플로 방지. 동적 할당 메모리 잘못 사용에 대한 문제 예방.
타입지정 언어 --> 타입 안정성을 보장
불변변수 및 불변클래스(데이터 클래스) --> 다중 스레드 어플리 케이션에서 안정성
널포인터 예외를 없애기 위한 많은 제공.
타입케스팅 예외를 방지 예외 is (타입 검사 와 케스트)를 한번에 수행.
1.4.4 코틀린은 상호운용성이 좋다.
- 자바와 코틀린 소스 파일을 자유롭게 내비게이션 할 수 있다.
- 코틀린은 자바와 코틀린 소스 파일이 섞여 있어도, 각 소스 파일 사이의 관꼐가 어떤 식으로 이뤄지든 상관없이 컴파일이 가능하다.