kotlin 24

DataBindingUtil 오류 - <layout> 처리

2021-04-08 12:59:47.952 7475-7475/com.some.application.debug E/AndroidRuntime: FATAL EXCEPTION: main Process: com.some.application.debug, PID: 7475 java.lang.NullPointerException: DataBindingUtil.inflate(… false ) must not be null DataViewBinding 을 작업하던 도중 위와 같은 오류가 나오면 내가 만든 xml 파일에서 .... 처리를 했는지 확인해보자. 난 여러개의 ViewHolder 를 생성하던 도중 한가지 ViewHolder 에 쓸 xml 레이아웃에 ... 처리를 해주지 않아서 발생했다.

Dev/Android 2021.04.08

Kotlin 기본 개념 정리

Kotlin 기본 개념 정리를 시작해 합니다. 일단, 코틀린의 핵심 함수 Scope functions - let, run, with, apply, also. 유용한 함수에 대한 자세한 설명은 코틀린 사이트에서 잘 나와있다. kotlinlang.org/docs/scope-functions.html Scope functions - Help | Kotlin kotlinlang.org 간단하게 정리해보면, 리턴 값의 차이라고 생각합니다. - 람다 결과를 리턴 값으로 받는 let, run, with - 해당 객체 자체를 리턴 값으로 받는 apply, also 간단한 사용 방법 - Null이 아닌 객체 실행 : let val str: String? = "Hello" //processNonNullString(str)..

Dev/Kotlin 2021.03.12

코드리뷰 - if else 줄이기

받은 리뷰 중에서 기억에 남는 코드 리뷰 이전 코드 val displayColor: Int get() = if (tier != null) { when { tier.isChoice -> R.color.choice_color else -> R.color.default_color } } else { R.color.default_color } 리뷰 코드 val displayColor: Int get() = when (tier?.isChoice) { true -> R.color.white else -> R.color.black } ? 를 통해서 null 체크 하는걸 알고 사용하면서도 가끔씩 약간 낯선(?) 상황을 만나면 나도모르게 몸에 베어있는 코드로 회귀(?)하게 된다.

카테고리 없음 2020.08.05

코드 리뷰 - view는 멍청하게!!!

받은 리뷰 중에서 기억에 남는 코드 리뷰 presenter에서는 view에 예외를 넘기고, view에서 예외 종류를 판단하여 그에 따라 적절한 화면을 보여주는 방식입니다. 이러한 방식보다는 presenter에서 직접 view에서 어떤 화면을 보여줘야 할지 구체적으로 지시하는 것이 나을 것 같습니다. view는 가능한 단순하고 멍청하게(?) 만드는 것이 좋습니다. 그렇게 했을 때 presenter를 대상으로 좀더 의미있고 수월하게 테스트 코드를 작성할 수 있습니다. 리뷰를 받기 전의 코드는 다음과 같은 형태로 작성이 되었다. override fun errorMessage(errorCode: Int) { when (errorCode) { 1111 -> { // 1111 에 해당하는 view 처리 } 2222..

카테고리 없음 2020.08.04

부족한 부분 참고

photo by Fabian Grohs on Unplash 1. BLE 통신 수단의 장단점?- 근거리 통신 수단으로 wi-fi, LTE 도 있을것인데, 그에 비해서 전력의 소모가 적다(Bluetooth조차도)- 대량 생산을 할 수 있게 가격이 저렴하다. 2. 함수형 프로그래밍이란? (뭐가 좋은지?)- 3. RxJava, EventBus 의 장단점? (왜 쓰는지?)- 4. 코틀린을 사용하면 뭐가 좋은가?- 5. 이 문제를 해결하기 위해서 어떤 생각들을 했는가?-> 어떻게 해결을 해야겠다, 이 문제의 목적은 이런것 같다 등의 부분들... (작성중....)

Dev/참고 2018.10.30

코틀린 - 고차 함수: 파라미터와 반환 값으로 람다 사용 (요약)

8장 고차 함수: 파라미터와 반환 값으로 람다 사용 (요약) - 함수 타입을 사용해 함수에 대한 참조를 담는 변수나 파라미터나 반환 값을 만들 수 있다.- 고차 함수는 다른 함수를 인자로 받거나 함수를 반환한다. 함수의 파라미터 타입이나 반환 타입으로 함수 타입을 사용하면 고차 함수를 선언할 수 있다.- 인라인 함수를 컴파일할 때 컴파일러는 그 함수의 본문과 그 함수에게 전달된 람다의 본문을 컴파일한 바이트코드를 모든 함수 호출 지점에 삽입해준다. 이렇게 만들어지는 바이트코드는 람다를 활용한 인라인 함수 코드를 풀어서 직접 쓴 경우와 비교할 때 아무 부가 비용이 들지 않는다.- 고차 함수를 사용하면 컴포넌트를 이루는 각 부분의 코드를 더 잘 재사용할 수 있다. 또 고차 함수를 활용해 강력한 제네릭 라이브..

Dev/Kotlin 2018.10.17

코틀린 - 코틀린 타입 시스템 (요약)

6장 코틀린 타입 시스템 - 코틀린은 널이 될 수 있는 타입을 지원해 NullPointerException 오류를 컴파일 시점에 감지할 수 있다.- 코틀린의 안전한 호출(?.), 엘비스 연산자(?:), 널 아님 단언(!!), let 함수 등을 사용하면 널이 될 수 있는 타입을 간결한 코드로 다룰 수 있다.- as? 연산자를 사용하면 값을 다른 타입으로 변환하는 것과 변환ㄴ이 불가능한 경우를 처리하는 것을 한꺼번에 편리하게 처리할 수 있다.- 자바에서 가져온 타입은 코틀린에서 플랫폼 타입으로 취급된다. 개발자는 플랫폼 타입을 널이 될 수 있는 타입으로도, 널이 될 수 없는 타입으로도 사용할 수 있다.- 코틀린에서는 수를 표현하는 타입(Int 등)이 일반 클래스와 똑같이 생겼고 일반 클래스와 똑같이 동작한다..

Dev/Kotlin 2018.09.30

코틀린 - 코틀린 타입 시스템 (정리)

코틀린 타입 시스템 (Kotlin In Action) - 코틀린의 타입 시스템은 코드의 가독성을 향상시키는 데 도움이 되는 몇 가지 특성을 제공한다.- 널이 될 수 있는 타입, 읽기 전용 컬렉션 ? - fun strLen(s: String) = s.length 일 경우, 해당 함수가 널과 문자열을 인자로 받을 수 있게 하려면 타입 이름 뒤에 물음표를 명시해야 한다. fun strLen(s: String?) ?. - 안전한 호출 연산자 -> null 검사와 메소드 호출을 한 번의 연상으로 수행하게 도와준다. ?: - 엘비스 연산자 -> null 대신 사용할 디폴트 값을 지정할 때 편리하게 사용 fun foo(s: String?) { val t: String = s ?: " " } as? - 안전한 캐스트 ..

Dev/Kotlin 2018.09.30

코틀린 - 람다로 프로그래밍(요약)

5장 람다로 프로그래밍 - 람다를 사용하면 코드 조각을 다른 함수에게 인자로 넘길 수 있다.- 코틀린에서는 람다가 함수 인자인 경우 괄호 밖으로 람다를 빼낼 수 있고, 람다의 인자가 단 하나뿐인 경우 인자 이름을 지정하지 않고 it 이라는 디폴트 이름으로 부를 수 있다.- 람다 안에 있는 코드는 그 람다가 들어있는 바깥 함수의 변수를 읽거나 쓸 수 있다.- 메소드, 생성자, 프로퍼티의 이름 앞에 ::을 붙이면 각각에 대한 참조를 만들 수 있다. 그런 참조를 람다 대신 다른 함수에게 넘길 수 있다.- filter, map, all, any 등의 함수를 활용하면 컬렉션에 대한 대부분의 연산을 직접 원소를 이터레이션하지 않고 수행할 수 있다.- 시퀀스를 사용하면 중간 결과를 담는 컬렉션을 생성하지 않고도 컬렉..

Dev/Kotlin 2018.09.27

커니의 코틀린 - 3장 (데이터 클래스)

데이터 클래스 : 자료를 저장하는 클래스를 만드는 과정을 단순하게 하기 위해서 제공하는 특별한 클래스 코틀린 data 클래스data class Person(val name: String, val address: String) Java VO 형태 클래스public class Person { private String mName; private String mAddress; public Person(String name, String address) { this.mName = name; this.mAddress = address; } public String getName() { return mName; } public void setName(String name) { this.mName = name; } ..

Dev/Kotlin 2018.07.16