해결된 질문
작성
·
396
답변 1
2
정확한 것은 코틀린 언어 설계자들이 답변할 수 있겠습니다. 부정확할 수 있지만, 아는대로 답변드립니다.
코세라에 있는 코틀린 강의를 보면, 코틀린 설계자의 철학을 잠깐 언급해주는데요, 코틀린 언어의 타깃 사용자는 라이브러리나 프레임워크 개발자가 아닌 "일반 응용프로그래머"입니다. 범용적으로 사용되는 라이브러리 같은 경우에는 확장성을 주요 목표로 가져가서 상속에 열려있어야 하는 걸 기본으로 선택할 수 있겠습니다만, 일반 응용프로그래머 입장에서는 닫혀있는 게 낫겠습니다.
꼭 확장을 해야하는 부모 클래스의 경우에만 명시적으로 open을 선언하는 게 더 나은 선택일 수 있다고 생각해요.
또, 변수의 경우에도, 이제 불변 데이터의 장점을 강조하는 분위기이니, final이 기본인 게 좋은 디자인이라고 봅니다. 자바스크립트로 예로 들면, let과 const의 차이가 있는 건데, const를 주로 활용하는 것이, 문맥 중간에 값이 바뀔 수 있는 let보다 더 명쾌하다고 볼 수도 있고요.
러스트같은 경우에도, 그냥 let으로 변수를 선언하면 기본은 final이라서 값을 바꿀 수 없고, let mut이라고 mut이라는 키워드를 추가로 붙여줘야 값을 바꿀 수 있습니다.
어느 쪽이든 디폴트를 뭘로 가져가냐의 차이인데, 디폴트는 "권장"할만한 안전한 것을 기본으로 가져가고, 필요에 따라 "위험"한 선택을 하는 경우에는 불편을 주는 것이 나은 디자인이 되겠습니다. 애써 불편을 감수할 만큼 꼭 필요한 경우에만 쓰라는 거죠.
자바 같은 경우는 워낙 오래된 언어라, 요즈음의 선택과는 조금 다른 편인 것 뿐입니다. 이제와서 자바의 디폴트를 바꿀 수도 없고요.
답변 감사합니다 !