2023.05.01

Jay Ji·2023년 5월 1일
0

I write TIL I close my Eyes

목록 보기
23/28
post-thumbnail

Problem

현재 게시판 구축하는 프로젝트를 진행하며, 아무코드가 구현되지 않은 interfaceDto파일을 구축하였다. 목적은 유연성과 확정성을 위해 공통 인터페이스를 구축하였고, 메소드나 속성이 없는 인터페이스지만 마커 인터페이스로 사용하기 위해 구축했다. 하지만 멘토와 해당 부분에 대하여 이야기를 해보았고, 비어있는 interface를 만드는 것은 좋지 않다고 하였다.

About Interface

What is Interface?

인터페이스는 추상 클래스의 한 종류이다. 추상 클래스와 같이 추상 메서드를 포함하지만, 추상 클래스보다 추상화 정도가 더 높아 추상 클래스와 달리 일반 메서드나 멤버 변수를 멤버로 가질 수 없고 추상 메서드와 상수만을 멤버로 가질 수 있다.

만약 추상 클래스를 부분적으로 완성된 '미완성 설계도'라고 한다면, 인터페이스는 구현된 것이 없고 밑그림만 그려진 '기본 설계도'라고 볼 수 있다.

인터페이스도 추상 클래스와 마찬가지로 완성되지 않은 불완전하기 때문에, 다른 클래스를 작성하는 데 도움을 주는 목적으로 사용 된다.

Why can't I use interfaceDto?

특정하고 구체적인 이유 없이 interface를 구축하는 것은 좋지 않다고 한다. 특히 내가 사용하려던 방식의 interface는 Marker Interface(마커 인터페이스란 내부에 메서드나 상수가 없는 인터페이스를 의미)라고하는데, 마커 인터페이스를 사용하면 좋지 않은 가장 큰 이유는 마커가 어떤 동작도 정의하지 않기 때문에 인터페이스가 무엇을 의미하는지의 경계선을 흐리게 하기 때문이다.

What I learned

혼자서 진행하는 프로젝트에는 마커 인터페이스를 사용해도 무방할 것 같다. 하지만 co-work으로 진행하는 프로젝트의 경우 마커 인터페이스를 사용하면 다른 팀원에게 혼란을 줄 수 있을 것 같다.

다행히 현재 진행하는 프로젝트에서는 interfaceDto대신 ResponseEntity<>를 사용하여 문제를 해결했다.

profile
Think out of the Box

0개의 댓글