Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kotlin 에서 null 다루기 #4

Open
8 tasks
daehwan2da opened this issue Apr 9, 2023 · 6 comments
Open
8 tasks

kotlin 에서 null 다루기 #4

daehwan2da opened this issue Apr 9, 2023 · 6 comments

Comments

@daehwan2da
Copy link
Collaborator

daehwan2da commented Apr 9, 2023

Question

코틀린을 사용하다보면 다들 null 에 안전하다, non-null type, nullable 하다.. 와 같이 null 이라는 키워드가 자주 등장하는데요, 과연 무슨 관계가 있고 kotlin 에서는 이를 어떻게 다루는 것 일까요?

알아보면 좋은 check list

이것까지 찾아보면 당신은 초고수

@daehwan2da daehwan2da changed the title kotlin 과 null 타입 kotlin 에서 null 다루기 Apr 13, 2023
@kez-lab
Copy link
Member

kez-lab commented Apr 13, 2023

코틀린은 일단 IDE에서 Null일 경우 참조시에 ?를 권장하는 부분에 있어서 개인적으로 너무 편했던 것 같습니다! 자바의 경우 @nonull, @nullable을 붙여주지 않아서 크래시가 터졌던 적이 있었는데,,, 이 때 몸소 왜 코틀린이 Null Safe하다는 것인지 느끼게 된 것 같습니다.

혹시 다른분들은 자바를 사용하다가 코틀린을 썻을 때 또 다른 느낀점이 어떤게 있으셨나요?!!

@giovannijunseokim
Copy link

저는 코틀린이 처음이었습니다! 코틀린을 활용해서 안드로이드 앱을 개발하는 과정에서 앱이 터지는 일이 있을때마다 화가 매우매우 났던 기억이 있네요. 이 때 null을 잘 활용하면 앱이 꺼지지 않게 할 수 있다는 점이 너무 감사감사했습니다!

@daehwan2da
Copy link
Collaborator Author

@giovannijunseokim
null 을 어떻게 잘 활용하셔서 앱이 꺼지지 않게 되셨을까요 ㅎ ㅎ

@giovannijunseokim
Copy link

사실 null을 잘 활용했다기보다, 엘비스 연산자(?:), let함수를 잘 활용했던 것 같아요! 알아보면 도움 될만한 내용들인데 둘 중 하나 설명해주실 분 계실까요 ~~~

@SeonHwan-Kim
Copy link

let 함수는 어떤 상황에서 자주 쓰이는 편인가요..?

@giovannijunseokim
Copy link

giovannijunseokim commented Apr 19, 2023

// Conventional approach
if (variable != null) { /*Do something*/ }

// Seemingly Kotlin approach
variable?.let { /*Do something*/ }

이런식으로 null하지 않을 경우에만 내부의 동작을 수행합니다.
그런데 저도 리서치 중 알게된 것인데....!

만약 let을 JAVA로 디컴파일 해보면

public final void process(@Nullable String str) {
   if (str != null) {
      boolean var4 = false;
      /*Do something*/
   }
}

이렇게 된다고 합니다.. 의미가 없었네요..?(코드 수는 줄었지만) 오히려 불필요한 변수가 생성되었습니다.
따라서 null safety를 위해 let 함수를 사용하는것을 앞으로 지양해보려고 합니다.

출처

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants