이것도 상수인가?

June·2022년 2월 14일
0

우테코

목록 보기
5/84

Random 객체를 사용하도록 변경하였습니다. 질문이 하나 생겼는데 랜덤 객체는 굳이 여러개가 생성될 필요 없을 것 같아 static으로 만들었습니다. 또한 변경되지 않을 것 같아 final을 붙였구요. 그러면 static final이 붙는데 이것도 상수 취급을 하는건가요?

static final이 붙어서 상수가 되는건지, 상수이기 때문에 static final이 붙는건지 헷갈립니다! 만약 전자라면 Random RANDOM 이런식으로 사용해야하나 싶어 질문드립니다.

private static final Random RANDOM = new Random();

내가 생각하던 상수와 개념이 충돌해서 헷갈렸다. 이것도 상수라고 생각을 해야하는가.

static final인 변수를 자바 언어(?)로 해석하면 해당 클래스에 속하는 단 하나뿐이고 변하지 않는 변수로 해석할 수 있겠네요. 즉, 상수를 자바의 키워드로 표현간 것이 static final이라고 생각하면 될 거 같아요. 그래서 인과관계를 굳이 따지자면 필요충분조건일 거 같네요 :)

네이밍에 관해서라면 전부 대문자로 하는 게 원칙이라면 원칙이겠지만 RANDOM이든 Random이든 크게 상관은 없을 거 같아요. 저는 숫자가 아닌 상수에 대해서는 Random처럼 짓는 편입니다. 이 스레드를 한 번 읽어보는 것도 좋을 거 같네요.

재밌게도 나와 비슷한 궁금증을 가진 사람들이 꽤 있었다.

https://stackoverflow.com/questions/7259687/java-naming-convention-for-static-final-variables/7259738#7259738

다만 Logger 같은 것을 사용할 때 LOGGER로 적은 코드는 아직 보지 못했다. 말 그대로 선호의 문제라면 나는 이런 경우 일반 변수 취급을 하는 것이 더 나은 것 같다.

0개의 댓글