티스토리 뷰
톱 레벨 클래스는 한 파일에 하나만 담으라는데 이 말을 듣기 전에도 무의식적으로 수행하고 있었다
얼마 전 Kotlin in action을 깔짝 보고 top-level function을 써봤는데 Item25를 읽으면서 자바는 왜 안 되는지 궁금해졌다
그 이유는 자바의 초기 설계와 관련이 깊은데 자바에서는 모든 것이 객체다
다른 말로 하자면 모든 것이 객체 안에 있어야 한다
그렇기 때문에 톱 레벨에는 클래스를 두고 그 안에 변수나 메서드를 둬야 한다
비록 그 클래스가 아무런 의미 없이 컨테이너 역할을 하더라도 말이다
코틀린에서는 아마 이런 불필요한 껍데기를 두는 게 꼴 뵈기 싫어서 톱 레벨에 변수나 함수를 선언할 수 있도록 만든 거 같은데
JVM 언어이고 자바와의 상호 운용성을 제일로 치기 때문에 컴파일 시 우리 몰래 클래스가 만들어진다
코틀린의 다양한 함수들을 설명하는 좋은 글이 있어 첨부한다
단점이라고 한다면 Namespace의 오염이 있을 수 있다
자바로 예를 들어 YahoConstant와 OhayConstant의 YAHO 변수는 이름이 같기에
YahoConstant.YAHO, OhayConstant.YAHO로 쓸 때는 문제없지만
YahoConstant, OhayConstant 얘네 둘을 static import 갈겨버리면 둘 다 YAHO로 사용할 수 있고
이런 경우 어떤 클래스의 변수를 사용하는지 모르기 때문에 Namespace가 오염되었다고 한다
public class YahoConstant {
public static final String YAHO = "YAHO";
}
public class OhayConstant {
public static final String YAHO = "OHAY";
}
대규모 프로젝트의 경우엔 Constant 클래스도 단일 클래스보다 의미를 분명히 나눠두고
사용하는 곳에 따라 이름을 달리해 사용하기 때문에 변수명이 같더라도 클래스명이 달라 구분하기 쉽다
코틀린에서는 이때 전부 변수명으로 구분해야 하니 어려울 수 있겠다는 생각이 들었다
모든 것이 객체 나쁘지 않을지도..
잠깐 보고 써봤지만 코틀린의 첫인상은 깔끔했다
확실히 이 악물고 자바의 boiler plate를 없애려 한 것 같고
자바와 거의 비슷하지만 그래도 자바 외에 새로운 언어라 재밌었다
개발 병아리에겐 뭐든 새로운 거라 참 재밌다
백엔드를 주로 하지만 협업을 위해 프런트가 어떻게 돌아가는지 알아보려고
인프런에서 vue.js + typescript 강의를 몇 개 사서 봤는데 백엔드처럼 깊게 공부하진 못 했어도 요놈도 참 재밌다
정적 언어를 쓰는 입장에서는 자바스크립트보다 타입스크립트가 다루기 훨씬 편하다
vue.js는 react가 학습 곡선이 높다고 해서 선택한 건데 확실히 best-case가 딱딱 정해져 있어서 다루기 쉬운 것 같다
양질의 자료나 강의도 많고
풀 스택 같은 거창한 목표는 없지만 리액트도 배워보고 싶다
프런트가 재밌는 이유는 프로 정신을 갖고 하기보단 진짜 장난감 다루듯 배우기 때문인 것 같다
최근 진행하는 OAuth2 프로젝트에서 Google OIDC, WebClient에서 자꾸 에러가 터져
머리까지 터질 듯했지만 가까스로 해결해냈다
역시 풀고 나면 별거 아닌 문제였으나 날 꽤나 괴롭혔다, 조만간 블로그 글로 옮겨봐야겠다
'Java > Effective Java' 카테고리의 다른 글
[Item27] @SuppressWarnings 알고 쓰자 (0) | 2022.03.06 |
---|---|
[Item26] 타입으로 안전하게, 유연하게 (0) | 2022.03.04 |
[Item24] Nested Class (0) | 2022.03.01 |
[Item23] boolean 대신 타입으로 (0) | 2022.02.28 |
[Item22] 규칙 준수 (0) | 2022.02.28 |