inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Hướng dẫn dành cho người mới bắt đầu sử dụng Java và Kotlin

Bài 2. Cách xử lý null trong Kotlin

리턴 값 생략에 대하여

557

lbrve

3 câu hỏi đã được viết

1

안녕하세요 자바에서 코틀린으로 넘어가고 싶어 강의를 들으며 차근차근 공부중입니다.
인텔리제이에서 option + command + v 단축키를 사용하면
바로 리턴 타입을 알 수 있어서 자바 개발을 할 때 자주 사용 했습니다.
하지만 코틀린은 기본적으로 타입의 명시가 생략되어 있어서 그런지 같은 단축키로 리턴타입이 나오지 않더라구요

기존 자바의 경우
"ABC".startsWith("A"); 에 option + command + v 를 사용하면
boolean a = "ABC".startsWith("A"); 이렇게 startsWith()의 리턴 값이 boolean이라는 것을 알 수 있는데

코틀린의 경우

val startsWith = "ABC".startsWith("A") 이렇게 나옵니다.
제 생각에는
val startsWith: Boolean = "ABC".startsWith("A")
이런식으로 나와야 할 것 같은데 말이죠


물론 메서드에 마우스를 올리면 리턴 타입을 알 수 있지만
자바 개발하면서 익숙해진 단축키라 코틀린에서도 유용하게 활용할 수 있는지 궁금합니다.

그리고 실무에서 개발 할 때에도 리턴타입이 없다면 많이 불편할 것 같은데 아직 자바에서 벗어나지 못해하는 걱정인걸까요...?

코틀린 인텔리제이 kotlin java 단춬키 oop

Câu trả lời 1

4

lannstark

안녕하세요, lbrve님!!! 크으~~ 너무너무 좋은 질문 이십니다~!! 😊

두가지 측면으로 말씀드려보겠습니다!!

1) 말씀해주신 IntelliJ의 Introduce (Local) Variable 기능을 사용하시면 화면에 이런 창이 나오실거에요!

image

여기서 Specify type explicitly 를 마우스로 클릭하시면, 타입도 함께 나오게 됩니다!

마우스로 옮겨가시는게 불편하시다면, 맥 기준 option + T (윈도우 기준 ALT + T) 를 누르시면 해당 체크박스가 클릭없이 체크됩니다! (즉 위와 동일한 행동을 한 것으로 간주됩니다 ㅎㅎㅎㅎ)

즉 변수명을 자동 추출 할 때 마우스 혹은 키보드를 이용하셔서 타입을 함께 지정하실 수 있으셔요!! default로 타입까지 나오게 하는 것은 저도 조금 찾아봤는데 아직은 없는 것 같았습니다! 😢

2) 변수의 타입 명시

librve님께서 말씀해주신 '리턴 타입'이란 것은 함수 리턴 타입이 아니라, 아마 변수를 만들 때 쓰이는 타입을 말씀해주시는 것 같습니다!!! val startsWith: Boolean = "ABC".startsWith("A") 에서 Boolean인 거죠 ㅎㅎㅎㅎ

사람마다 다를 수 있겠지만 저의 경험을 말씀드려 보면, 저도 처음에 Java에서 Kotlin으로 넘어갈때는 타입이 없어서 조금 어색했습니다! 그런데 변수이름을 잘 짓게 되면 타입이 없더라도 크게 불편하지 않는 경우들이 있더라고요!

예를 들어 isYoung 이란 단어를 보면 이름만 보아도 Boolean의 기운이 느껴지죠!! 또한 name / age 는 이름만 보아도 각각 문자열 / 숫자 라는 기운이 느껴집니다!!

비슷하게 names는 왠지 Collection<String>일 것 같고요!! person은 왠지 Person 타입의 인스턴스 같죠 ㅎㅎㅎ

이런 경우는 개발 시간을 줄여주고, 코드도 짧아져서 가독성이 향상되는 편입니다.

하지만 모든 경우 이런 방식이 잘 동작하는 것은 아닙니다. 그래서 <Effective Kotlin>Item14. 변수 타입이 명확하지 않은 경우 확실하게 지정하라 라는 가이드도 있습니다. 예를 들어,

val data = getSomeData() 라는 코드를 보면 data가 도저히 무슨 타입인지 알 수가 없죠! 오히려 가독성이 떨어져 개발을 하는데 불편할 수 있습니다. 때문에 이럴 때는 val data: Type = getSomeData() 처럼 타입을 명시해주는 것이 좋습니다 ㅎㅎㅎ

정리드려보면, 처음에는 익숙하지 않으실 수 있으나 변수 이름을 잘 짓게 되면 이름만 보고 타입을 어느정도 유추할 수 있게 됩니다. 다만, 이리 보고~ 저리 봐도~ 타입을 유추하기 어려운 경우에는 타입을 명시적으로 적어주는 것이 좋습니다!!

lbrve님의 궁금증이 어느정도 해결 되셨을지 모르겠네요 ㅎㅎㅎㅎㅎ

또 보시다가 궁금한 점 있으시다면, 언제든 편하게 질문 부탁드립니다!! 감사합니다~ 😊😊

수업노트

0

53

1

싱글톤과 스프링

0

71

2

get() = 3

0

49

2

강사님

0

74

1

강의 복습하면서 생긴 질문

1

94

1

Kotlin과 Java의 현업에서의 활용

0

125

2

data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문

0

74

1

코틀린에서 상속 시, 주의점에 대한 질문

1

95

3

내용 이해 질문

0

56

1

자바와 코틀린의 함수형 프로그래밍,

1

91

1

플랫폼 타입 설명 문의

2

76

2

널 아님 단언 관련 질문

0

83

1

강의 중 질문

0

79

2

범위 비교 질문

1

91

2

타입캐스팅 궁금한점 질문드립니다.

1

239

2

코틀린 val 질문

0

166

2

완강 후 Kotlin 이런저런 질문 드려봅니다!

3

408

2

확장함수 스타일 질문

0

139

2

확장 프로퍼티 질문

1

156

1

update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!

1

283

1

java class의 NotNull 어노테이션 인식

1

263

1

[16강] 확장함수 관련 질문입니다!

1

133

2

리턴타입 사용시 any를 사용해도 괜찮은가요?

1

140

1

안녕하세요 scope function 에 receiver 가 없는 경우

1

170

1