okky에서도 추상화에 대한 여러글을 봤는데 의견이 항상 갈리는거 같아 좀 정리 좀 하고자 글을 올려 봅니다.
추상화를 쓰면 생기는 단점
1. 구현체를 런타임시 결정
2. 소스만 봐서는 추상화된 타입만 보고 구현체를 찾기 힘들다. 런타임이 아닌 이상.(구현체가 조건에 따라 바뀔수도 있어서 디버깅 힘듬)
3. 추상화 했던 서비스가 바뀔 시에 구현체들을 모두 바꿔줘야 한다.
사용 측면에서 추상화 타입을 통한 쉬운 구현체 변경과 확장을 위해서
추상화를 미리 시켜서 코드를 읽기 힘들게하는 위에 문제점들을 가질 필요가 있나 싶습니다.
추상화가 필요한 작업은
1. 미사일이나 군사 시설 등 틀리면 안되는 중요한 프로그램일 떄 객체 자체에 행위들에 강제성을 주고
일관성을 갖는데 의미를 두는것도 같습니다.
2. 설계단에서 동일한 역할을 하는 구현체가 많다 싶을 떄 또는 개발이 다 끝난 시점에 필요한 추상화를 하는것이 좋다고 생각이 됩니다.
3.외부로 라이브러리를 오픈하는 경우나(디비 커넥션 처럼)
다른분들 의견이 궁금합니다.