팀의 색깔이 FE 쪽이라면, 객체 지향 개념은 사실 맞지 않을 수 있습니다.
객체라는 개념 자체가 단순화, 간략화(추상화)를 토대로 하고 있고, 상속은 체계화/통일화를 위한 것입니다.
비록, 피상적 정의를 통해 구현을 뒤로 미룬다하더라도, 정형성은 피할 수 없습니다. 이 정형성은 디테일이 중요한 디자인의 영역에서는 굴레처럼 느껴질 수 있습니다. (그래서 Xaml 이 디자이너들에게 인기가 없나 봅니다. ^^)
로직 쪽이고, 객체 지향 언어를 사용하면서도 기본적인 상속을 기피한다는 것은 분명 문제가 있습니다.
그런데, 프로젝트의 구조는 소프트웨어 설계론을 따르고 있는데, 인력의 배치는 그렇지 않은 것은 아닌지요?
어떤 설계론이든, 각 레이어의 사이의 관계는 공급자와 소비자이고, 피상적 정의(abstract, interface)가 힘을 발휘할 곳은 공급자와 소비자의 경계선입니다.
즉, 협업 당사자들이 공급자와 소비자로 서로 반대 입장일 때, 피상적 정의를 통해 가시적 효익을 누릴 수 있습니다.
이 경계선을 피상적으로 정의하는 것은 표준화된 통신 단자를 쓰는 것과 같습니다.
우리가 이더넷 통신의 표준 단자로 RJ45 잭을 사용하고 있는 것처럼 말이죠.
그런데 한 사람에게 몇 개의 레이어를 할당시켜 놓고, 연결점을 꼭 갖추라고 말하는 것은 마치,
"공유기 안쪽의 통신선도 납땜하지 말고, RJ45로 연결할 것"을 강요하는 것과 같을 수 있습니다.
“케이스 안에서 남땜하든 뭘 하든 님이 뭔 상관?” 이라는 1차적 거부감이 쉽게 유발될 수 있습니다.
연결점을 피상적으로 정의하는게 옳은가 아닌가에 대한 논의 이전에, 현재의 자원으로 감당할 수 있는 일인가에 대한 고민을 먼저 해보시는 건 어떨까합니다.
설령 자원이 충분하다고 하더라도, 아래의 질문에 스스로 답변을 해보신 후에, 그 답변을 바탕으로 팀원을 설득해보시는 것도 좋을 듯합니다.
-
IRepository 의 구현을 론칭 이후에 바꿔 본 적이 있는가?
유지보수가 아니라, DB=> 파일, API=>DB 등, 새로운 실물 저장소를 위한 구현체 변경.
-
DbContext 를 IRepository로 감싸 놓고, 론칭 이후에 DbContext를 바꿔 본 적이 있는가?