코틀린 & 컴포즈 & Java 57

코틀린 코딩컨벤션 정리

클래스 레이아웃 일반적으로 클래스의 내용은 다음의 순서로 정렬된다. 1. Property declartions and initializer block 2. Secondary constructors 3. Method declarations 4. Companion object 관련된 것들을 한데 모아 클래스를 읽는 사람이 위에서 아래로 무슨 일이 일어나고 있는지 로직을 따라갈 수 있도록 해라. 중첩 클래스들이 외부에서 사용되도록 의도되었고 클래스 내부에서 참조되지 않는다면 companion object 다음의 마지막에 위치시켜라. 콜론 아래와 같은 경우에 콜론 앞에 공백을 넣어라 - 타입과 슈퍼 타입을 분리할 때 - 동일한 클래스의 다른 생성자 또는 슈퍼 클래스의 생성자에게 위임할 때 - object 키워드..

스트림 함수

변환 map() : 컬렉션 내 인자를 다른 값 혹은 타입으로 변환할 때 사용합니다. val cities = listOf("Seoul", "Tokyo") cities.map { city -> city.toUpperCase() }.forEach { print(it) } // 대문자로 변환 cities.map { city -> city.length }.forEach { print(it) } // length 변환 mapIndexed() : 컬렉션 내 포함된 인자의 인덱스 값을 변환 함수 내에서 사용할 수 있습니다. val numbers = 0..10 numbers.mapIndexed{ idx, number -> idx * number }.forEach{ print("$it ") } //변환 함수에서 각 인자와..

Kotlin 코딩규칙 서식

들여 쓰기 들여 쓰기에는 공백 4개를 사용하십시오. 탭을 사용하지 마십시오. 중괄호의 경우 구성이 시작되는 줄 끝에 여는 중괄호를 배치하고 여는 구성과 수평으로 정렬 된 별도의 줄에 닫는 중괄호를 배치합니다. if (elements != null) { for (element in elements) { } } i) Kotlin에서 세미콜론은 선택 사항이므로 줄 바꿈이 중요합니다. 언어 디자인은 Java스타일 중괄호를 가정하며 다른 형식화 스타일을 사용하려고 하면 놀라운 동작이 발생할 수 있습니다. 수평 공백 이항 연산자 (a + b) 주위에 공백을 두십시오. 예외: "범위"연산자 (0..i)주위에 공백을 두지 마십시오. 단항 연산자 (a++)주위에 공백을 두지 마십시오. 제어 흐름 키워드 (if, when..

Kotlin 코딩규칙 명명 규칙

패키지 이름은 항상 소문자이며 밑줄을 사용하지 않습니다. 여러 단어로 된 이름을 사용하는 것은 일반적으로 권장되지 않지만 여러 단어를 사용해야 하는 경우 함께 연결하거나 카멜 케이스를 사용할 수 있습니다.(org.example.myProject) 클래스와 객체의 이름은 대문자로 시작하고 카멜 케이스를 사용합니다. open class DeclarationProcessor{ /*...*/ } object EmptyDeclarationProcessor : DeclarationProcessor() { /*...*/ } 기능 명 함수, 속성 및 지역 변수의 이름은 소문자로 시작하고 카멜 케이스를 사용하고 밑줄은 사용하지 않습니다. fun processDeclarations() { /*...*/ } var decl..

Kotlin 코딩규칙 소스 코드 구성

소스 코드 구성 디렉토리 구조 순수 Kotlin 프로젝트에서 권장 디렉터리 구조는 공통 루트 패키지가 생략 된 패키지 구조를 따릅니다. ex) 프로젝트의 모든 코드가 org.example.kotlin 패키지와 하위 패키지에 있는 경우 org.example.kotlin패키지가 포함 된 파일은 소스 루트 바로 아래에 배치해야 하며 파일은 소스 루트 org.example.kotlin.network.socket의 network/socket 하위 디렉토리에 있어야 합니다. 소스 파일 이름 Kotlin 파일에 단일 클래스(관련 최상위 수준 선언 포함)가 포함 된 경우 이름은 .kt확장자가 추가된 클래스 이름과 동일해야 합니다. 파일에 여러 클래스가 포함되어 있거나 최상위 선언만 포함 된 경우 포함에 포함된 내용을 ..

메모리 구조(static, stack, heap)

메모리의 공간은 크게 Static(스태틱) 영역, Stack(스택) 영역, Heap(힙) 영역으로 구분되고 데이터타입(자료형)에 따라서 해당 공간에 할당된다. Static area(스태틱 메모리 영역) 하나의 JAVA 파일은 크게 필드(field), 생성자(constructor), 메소드(method)로 구성된다. 그중 필드 부분에서 선언된 변수(전역변수)와 정적 멤버변수(static이 붙은 자료형) Static 영역에 데이터를 저장한다. Static 영역의 데이터는 프로그램의 시작부터 종료가 될 때까지 메모리에 남아있게 된다. Stack area(스택 메모리 영역) 우리가 현재까지 작성하던 메소드 내에서 정의하는 기본 자료형(int, double, byte, long, boolean 등)에 해당되는 지..

Multi Thread(멀티 스레드)

프로세스(Process) : 실행 중인 하나의 애플리케이션(애플리케이션인 Chrome 브라우저를 두 개 실행 시키면, 두 개의 Chrome Process가 생성된 것) 멀티 스레드(Multi thread) : 하나의 Process가 두 가지 이상의 작업을 처리할 수 있도록 하는 것. 멀티쓰레딩의 장점 CPU의 사용률을 향상시킨다. 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성이 향상된다. 작업이 분리되어 코드가 간결해진다. 주의할점 멀티쓰레드 프로세스는 여러 쓰레드가 같은 프로세스 내에서 자원을 공유하면서 작업을 하기 때문에 발생할 수 있는 동기화(synchronization), 교착상태(deadlock)와 같은 문제들을 고려해서 신중히 프로그래밍 해야한다. 교착상태) 두 쓰레드가 자원을..