[하루기록] 22.12.19

지찬우·2022년 12월 19일
0

하루기록

목록 보기
6/10
post-thumbnail

오늘도 아르바이트를 하다가 자투리 시간에 글을 써본다.

눈이 와서 신발 때문에 바닥이 너무 많이 더러워진다… 열심히 닦아도 손님들이 오시면 다시 더러워진다🙃 이제는 짬이 좀 생겨서 쓰레기부터 치우고 퇴근 30분 전에 닦기를 시작한다. 그래도 이렇게 좋은 아르바이트는 어디를 가도 못 구할 것 같다.


인터페이스 상수

오늘은 스프링 강의를 듣기 전에 우테코 프리코스 1주차 문제를 풀어보며 다른 사람들의 코드도 구경했다. 역시.. 잘하시는 분들이 너무 많다. 보고 배울 점이 너무 많은 것 같다.

친한 선배님 코드도 구경했는데 함수도 잘 나누시고 이름도 잘 지으시고 상수 처리도 너무 잘 하신 것 같다. 상수를 interface로 따로 만드셔서 사용하셨길래 구글에 검색해서 찾아보았는데(상수를 정의한 인터페이스), interface에서는 변수를 등록할 때 자동으로 public static final이 붙는다고 한다. 따라서 다음과 같이 public static final을 입력하지 않아도 객체를 생성하지 않아도 상수를 사용할 수 있는 것이다.

public interface Constants {
	double PI = 3.141592;
    ...
}	

하지만 Effective Java의 ‘Item 19 - Use interfaces only to define types’ 파트에 다음과 같이 나와있다.

The constant interface pattern is a poor use of interfaces

상수 인터페이스 패턴은 인터페이스를 잘못 사용하는 것이다’라는 뜻이다.
그래서 선배님께 여쭤봤더니 선배님도 지금은 그렇게 하지 않는다고 하셨다. 역시 한 발 빠르시다.

대안으로, 아래와 같이 클래스에 상수를 선언하고 import static 구문을 사용해 상수를 쓸 수 있다고 한다.

public final class Constants {
	private Constants() {} //외부에서 생성하지 못하도록 하는 것 같다.

	public static final double PI = 3.141592;
	public static final int WOOPACA = 23;
}
import static Constants.PI;

public class Test {
	...
	// PI 사용 가능
	...
}

오늘도 좋은 내용을 배웠다. 사실 상수를 사용하는 것이 익숙하지 않지만 앞으로 익숙해지려고 노력하고 상수 인터페이스를 사용하는 방식은 지양해야겠다.

profile
좋은 개발자가 되자.

0개의 댓글