반응형

Language/Kotlin 8

[Kotlin] Coroutine 실행 순서 살펴보기

코루틴 실행순서를 간단하게 테스트해 보았습니다. 코루틴의 개념은 다루지 않습니다!class MainActivity : AppCompatActivity() { private val mainActivityViewModel: MainActivityViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mainActivityViewModel.testCoroutine() }}  [1] 하나의 코루틴스코프 내에 실행 순서private const v..

Language/Kotlin 2024.07.02

[Effective Kotlin] 2장 가독성 : Item 15번 ~ 18번

📌 [Item 15] 리시버를 명시적으로 참조하라. ✅ 리시버가 명확하지 않다면, 명시적으로 리시버를 적어서 명확하게 하는 것이 좋다. 레이블 없이 리시버를 사용하면 가장 가까운 리시버외부에 있는 리시버를 사용하려면, 레이블을 사용 예시)apply 스코프 내부에 레이블 없이 사용된 리시버는 create()메서드의 반환값을 가리킨다. (this?.name)그리고 외부 리시버를 사용하기 위해 레이블을 붙여 사용하는 것을 확인할 수 있다. (this@Node.name) 출력: Created parent-child in  parent  어떤 리시버를 활용하는지 의미를 명확하게 하면 코드의 안정성과 가독성을 향상할 수 있다.리시버를 제거하여 코드를 짧게 만든다고 해서 무조건 좋은 것은 아니다.     📌 [I..

Language/Kotlin 2024.05.12

[Kotlin] 자료형 | 자료형 변환 | 스마트 캐스트

◼️ Kotlin코틀린은 JetBrains에서 개발하고 보급.자바와 달리 문장 끝에 세미콜론(;)은 옵션Google IO 2017에서 Android 공식 언어로 추가 발표변수는 Nullable과 NotNull로 나뉨  ◼️ 코틀린의 장점자료형에 대한 오류를 미리 잡을 수 있음 (컴파일러가 타입을 검증한다.)자바와 비교했을때 NullPointer Exception에서 비교적 자유로움데이터형 선언 시 Null 가능한 형식과 불가능한 형식 지원자바와 완벽하게 상호호환됨자바와 비교했을 때 간결하고 효율적인 프로그래밍이 가능함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능세미콜론 생략 가능  ◼️ 참고코틀린은 JVM위에서 동작한다.자바는 class안에 main 메서드를 선언해야 한다. 하지만 코틀린은 clas..

Language/Kotlin 2024.05.12

[Kotlin] 자료형 | 자료형 변환 | 스마트 캐스트

◼️ Kotlin코틀린은 JetBrains에서 개발하고 보급.자바와 달리 문장 끝에 세미콜론(;)은 옵션Google IO 2017에서 Android 공식 언어로 추가 발표변수는 Nullable과 NotNull로 나뉨 ◼️ 코틀린의 장점자료형에 대한 오류를 미리 잡을 수 있음 (컴파일러가 타입을 검증한다.)자바와 비교했을때 NullPointer Exception에서 비교적 자유로움데이터형 선언 시 Null 가능한 형식과 불가능한 형식 지원자바와 완벽하게 상호호환됨자바와 비교했을 때 간결하고 효율적인 프로그래밍이 가능함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능세미콜론 생략 가능 ◼️ 참고코틀린은 JVM위에서 동작한다.자바는 class안에 main 메서드를 선언해야 한다. 하지만 코틀린은 class없..

Language/Kotlin 2024.05.04

[Kotlin] infix & top level function

📌 infix 확장 함수Kotlin에서 infix 확장함수는 특정 타입의 메서드를 더 읽기 쉽고 자연스러운 문법으로 호출할 수 있게 해주는 기능입니다. infix 함수는 한 쌍의 객체 사이에 중위 연산자처럼 사용될 수 있으며, 단일 파라미터를 받습니다. 이를 통해 코드를 더 간결하고 직관적으로 작성할 수 있습니다. infix 확장함수 정의 방법infix 함수를 정의하기 위해서는 몇 가지 규칙이 있습니다.멤버 함수 또는 확장 함수여야 합니다. 단 하나의 파라미터를 가져야 합니다. infix 키워드로 시작해야 합니다. 사용 시 주의 사항infix 함수는 가독성을 높이는 목적으로 사용되며, 남발할 경우 코드의 명시성을 해칠 수 있으므로 적절한 상황에서 사용하는 것이 중요합니다. 함수가 단 하나의 인자만 받는..

Language/Kotlin 2024.04.28

[Effective Kotlin] 2장 가독성 : Item 11번 ~14번

📌 [Item 11] 가독성을 목표로 설계하라✅ 인식 부하 감소가독성이란 코드를 읽고 얼마나 빠르게 이해할 수 있는지를 의미합니다. 사람에 따라 가독성에 대한 관점은 다르지만, 뇌가 프로그램의 작동 방식을 이해하는 과정을 더 짧게 만드는것을 가독성이 좋은 코드라고 말할 수 있습니다.숙력된 개발자만을 위한 코드는 좋은 코드가 아니다.일반적이지 않고 ‘굉장히 창의적인’ 구조는 유연하지 않고, 지원도 제대로 받지 못한다. ✅ 극단적이 되지 않기let과 같이 잘 모르고 사용하면, 예상하지 못한 결과가 나올 수 있습니다. 누군가는 let을 절대로 사용하지 말라고 합니다. 그러나 let을 적제 적소에 잘 사용한다면 더 좋은 코드를 만들 수 있습니다. 📌 [Item 12] 연산자 오버로드를 할 때는 의미에 맞게 ..

Language/Kotlin 2024.04.28

[Effective Kotlin] 1장 안전성 : Item 6번 ~ 10번

📌 [Item 6] 사용자 정의 오류보다는 표준 오류를 사용하라제목 처럼 사용자 정의 오류를 사용하기 보단, 가능한 표준 라이브러리를 사용하는 것이 좋다.  ✅ 표준 라이브러리를 권장하는 이유많은 개발자들이 더 쉽고 빠르게 이해할 수 있다. 그러므로 재사용성도 더 좋아집니다. ✅ 표준 라이브러리 예외IllegalArgumentException과 IllegalStateException : require와 check를 사용해 throw 할 수 있는 예외다.IndexOutOfBoundsException : 인덱스 파라미터의 값이 범위를 벗어났을때 나타냅니다. 보통 ArrayList.get(Int)를 사용할 때 throw 된다.ConcurrentModificationException : 동시 수정을 금지했는데..

Language/Kotlin 2024.04.28

[Effective Kotlin] 1장 안전성 : Item 1번 ~ 5번

📌 [Item 1] 가변성을 제한하라✅  var 보다는 val을 사용하여 가변성을 줄이자!var읽고 쓰기가 모두 가능한 프로퍼티val읽기 전용 프로퍼티지만, 변경할 수 없음을 의미하는 것은 아니다.완전 불변이 필요하다면 final 프로퍼티를 사용하는 것이 좋다.✅  val & 스마트 캐스트타입 캐스트가 불가능한 경우 val name: String? = "dong" val surname: String = "hyeok" val fullName: String? get( ) = name?.let{ "$it $surname"} fun main() { // 타입 캐스트가 불가능하기 때문에 fullName!!...

Language/Kotlin 2024.04.23
반응형