작성
·
253
0
현재 Unity 프로젝트 진행 중입니다.
Model-View-(Reactive)Presenter로 UI를 구현했습니다.
그랬더니 클래스가 다음과 같이 작성되더군요.
ContentsPresenter : 버튼만 있는 화면
ContentsPresenter_WithDesc : 버튼과 설명이 있는 화면
ContentsPresenter_RoomList : 방목록 화면
ContentModel : 버튼 정보 데이터
ContentModel_Room : 버튼과 방 정보 데이터
ContentView : UI 요소(정사각형 버튼 컴포넌트 )
ContentView_Room : UI 요소(직사각형 버튼 컴포넌트)
디렉토리 상에서 봤을 때 Content라는 어휘만 유독 눈에 띄는게 거슬리고 언더바를 지우고 싶었습니다.
그래서 어떻게 바꿀지 3가지 방법을 고민해봤습니다.
1. 네임스페이스 사용
namespace ContentPresenter
{
public class Button {}
public class ButtonWithDesc {}
public class RoomList {}
}
namespace ContentView
{
public class Button {}
public class ButtonForRoom {}
}
namespace ContentModel
{
public class Button {}
public class Room {}
}
2. 상속 사용
public class Button : ContentsPresenter {}
public class ButtonWithDesc : ContentsPresenter {}
public class RoomList : ContentsPresenter {}
public class Button : ContentView {}
public class ButtonForRoom : ContentView {}
public class Button : ContentModel {}
public class Room : ContentModel {}
3. nested 클래스 사용
public class ContentPresenter
{
public class Button {}
public class ButtonWithDesc {}
public class RoomList {}
}
public class ContentView
{
public class Button {}
public class ButtonForRoom {}
}
public class ContentModel
{
public class Button {}
public class Room {}
}
작성해보고 나니 ContentPresenter의 클래스 이름이 모호하네요. 그런데 'Button만 표시하는 화면'임을 명시하는 직관적인 표현이 떠오르질 않네요... 어떤 이름이 좋을까요... ㅠ
아무튼 3가지 방법을 생각해 봤는데요.
1. 네임스페이스 사용
- 장점: 아무 비용 없이 클래스들을 묶을 수 있다.
-단점:
클래스명(Button)이 다른 네임스페이스의 클래스명(Button)과 동일해서 디렉토리 또는 코드 상에서 구분이 힘들다.
2. 상속 사용.
-장점: 클래스를 공통속성과 메소드들을 함께 묶을 수 있다.
-단점:
공통 속성과 메소드들이 없어서 오버엔지니어링이 될 수 있다.
네임스페이스와 마찬가지로 디렉토리 또는 코드 상에서 구분이 힘들다.
3. nested 클래스 사용
-장점:
3개의 클래스 파일로 간추릴 수 있다.
코드 상에서 소속 클래스를 명시하기 때문에 구분이 가능하다.
-단점:
파일이 점점 커진다.
이 3가지 방법 중에 어떤게 가장 나을지,
그리고 이 3가지 방법보다 더 나은 방법이 무엇일지 여쭤봐도 될까요?
좋은 강의 감사합니다 !
답변 감사합니다 !