버전 관리 용이한 클래스 디자인 소개 부탁드립니다.
글쓴이: bloody / 작성시간: 금, 2013/12/06 - 5:26오후
버전 관리 용이한 객체지향 디자인(클래스 디자인, 디자인패턴) 소개 부탁드립니다.
현재 프로그램 버전이 0.2 라고 한다면...0.3버전을 개발할 때에는 0.2 버전의 기능들을 유지하면서
0.3 버전의 추가적인 기능이나 변경된 기능들을 사용하고 싶은데요
예를들어 파일관리하는 프로그램이라고 치고 0.2 버전에서 설계된 클래스들을 유지하면서 0.3 버전이 개발되어도
하위 버전들에서 호환성에 문제가 없도록 하고 싶습니다.
가장 전형적인 방법은 (MS가 워드 프로그램 만들때 섰던 방법이라고 하던데...)
0.2 버전으로 만들어진 클래스를 0.3버전에서 상속해서 사용하는 방법이 되겠는데요.
그러면 나중에 5.323 버전 쯤 됬을 경우는 상속이 도대체 몇번 되어져야 한다는 건가요?
몇십번 몇백번의 상속이 이루어져야 할것 같은데...그건 좀 아닌것 같고요
하위버전 호환성을 유지하면서 매끈하게 프로그램을 짤러면 클래스 디자인이 어떻게 되야 할지 궁금합니다.
Forums:
보통 5.323 버전이면 0.2 버전은 지원 안하죠.
보통 5.323 버전이면 0.2 버전은 지원 안하죠.
그런 디자인 방법은 없습니다 없다고 하니 시도할까봐
그런 디자인 방법은 없습니다
없다고 하니 시도할까봐 그러는데
누군가 안해서 없는게 아니라 할 가치가 없기때문에 안하는겁니다
일층집에 철골 구조물 덧댄다고 63빌딩 지을 수 있을리가 없죠
제일 안전한건 그냥 분리시켜버리는 겁니다.
(개인적인 생각입니다.)
가령 프로그램 버전 1.0이 사용하는 라이브러리 A,B가 버전1이라면, 2.0을 개발하기 시작할 때 이걸 따로 브랜치해버립니다.
그리고 버전 2.0이 사용하는 라이브러리도 별개의 버전, 즉 2.0으로 가는거죠. 2.0에선 원하는대로 자유롭게 구조를 바꾸면 되고요.
이렇게 하지 않으면 설계를 그럴싸하게 한다 하더라도 나중에 결국 문제가 생깁니다.
버그픽스같은건 브랜치별로 각각 병합하면 되니까 의미없는 반복작업에 대해선 크게 걱정하지 않으셔도 됩니다.
--
댓글 달기