파이썬에서는 같은 path에서 import 할때 여러개 가져올 수 있음.
예를 들어서 some.library안에 a, b, c,를 가져오고 싶다면
from some.library import a, b, c
이렇게 하면 되는데,
코틀린은
import some.library.a
import some.library.b
import some.library.c
위에처럼 해야함.
물론 간편한 방식은 그냥
import some.library.*
이렇게 해서 some.library에 있는거 다 가져오는 방식을 쓰면 됨.
왜 코틀린은 이런식인거지?
파이썬처럼 콤마 써서 가져오고 싶은것만 한줄로 가져오게 할 수 없나? 그런 기능 지원할 예정 없나 하고 구글 서치 했다가,
Importing multiple entries in a single line - Language Design - Kotlin Discussions
위 페이지에서 나랑 같은 위문 가진 사람이 있었고, 거기에 젯브레인 사람이 답변함.
"우리의 포지션은, 네가 메뉴얼 임포트를 한다면 그건 잘못된 것이란 것임.
올바른 방식은 ide에서 제공하는 자동 임포트와, 그떄 그때 임포트를 최적화 하는 기능을 쓰는 것임.
그래서 import를 콤팩트하고 읽기 쉽게 만드는것은 우리 목적이 아니고, 사람들은 import 부분을 읽을 필요가 없어야함."
근데, 코틀린에서 제공하는 DSL도 그렇고 생각해보면 이거 애초에 IDE 없이 그냥 아주 기본적인 메모장 같은걸로 코드짜면 읽기 어려운 언어이긴 한것 같음.
그렇다곤 해도 import를 읽으려고 하지 말라는 젯브레인 직원의 답변은 좀 충격적이었다.
어이가업네
뭐가 문제임? 맞는말인데? 꼭 사람들은 자기가 익숙한게아니면 틀린거라생각하는 사람들이많더라
맞는말이냐 아니냐를 떠나서. 좀 컬쳐 쇼크였어.
ide 의존적이라는 것도 맞는 말인데
러스트처럼 묶어서 표현하는 방식도 추천되던데 지원하면 안 되나
ide 지원없이 개발하는거 점점 어려워진다
ide 왜 안씀? 이러면 할말없긴함
그렇기는 한데, 언어 개발사에서부터 ide를 쓰는게 기본이라는 식으로 말한것은 좀 컬쳐 쇼크였음. 태생이 ide 개발사에서 만든 언어이니 이런것이겠지.
심하게 장황하긴 한데 IDE 에디터 아닌 텍스트 에디터에서 그렇게 쓰기 어려운건 아니라 난 그다지 불편하진 않았음. 오히려 무조건 절대경로로 표기되니까 정렬하기 편한 부분도 있었고… IDE 만드는 사람들 특유의 사상이 답변에 녹아나있는게 신선하네 - dc App
오히려 러스트 방식으로 1개에서 2개 가져올려면 임포트문 이리저리 고쳐야하는게 불편하더라 이거야말로 ide/lsp 중심적인 문법인것 같기도 - dc App
뭔가 좀 오해가 있는것 한개이상 가져오면 같은데, 젯브레인 ide인 인텔리제이는 그냥 자동으로 * 이거 씀. a,b,c 별로 여러줄 추가해주는게 아니라.
엥 ㄹㅇ? 그건 놀랍네 설정에서 못바꾸나 - dc App
코드스타일 설정에서 몇개부터 *로 쓰는지 바꿀 수 있음
내기억에 디폴트 설정 기준으로 2개까지는 확실히 그대로 냅두고 3개부터였나 5개부터였나부터 *로 바꾸는 걸로 되어있을 거임
아 바꾸는 설정이 있었구나.
젯브레인: 깃허브에서 코드리뷰 할 때의 가독성은 신경 안쓴다 - dc App