2008-09-01 2 views
4

저는 현재 대용량 라이브러리 (5M 줄의 코드, C++에서는 VS2005, 1 가지 해결책, 100 개 프로젝트에 가까움)에서 작업하고 있습니다. 작은 소스 수정 후에는 컴파일을 배포하고 증분 링크, 재 컴파일 및 다시 링크를 사용하지만 몇 분 (일반적으로 최소 3 시간)에서 1 시간 가까이 걸립니다.대형 라이브러리에서 작업하기위한 팁?

이것은 수정 코드/빌드/디버그주기가 실제로는 길다는 것을 의미하며 빌드 중에 '흐름'을 잃어 버리기 쉽습니다. 일반적으로 유용한 작업을 수행 할 시간이별로 없습니다 (어쩌면 약간의 이메일을 보내거나 그렇지 않으면 온라인에서 기사 몇 권이나 책 한 권을 읽음).

새로운 코드를 작성하거나 주요 리팩토링을 할 때 한 번에 하나의 파일 만 컴파일하려고합니다. 그러나, 예를 들어, 디버깅하는 동안, 그것은 정말 내 신경에 도착!

저는 어떻게 시간을 최적화 할 수 있을지 궁금합니다. 나는 그 상황에서 유일한 사람이 아니라고 생각합니다. 무엇을/할 것인가? 할까요?

답변

1

나는 그 수준에서 개발에 대해 많이 알지 못하지만 여러 솔루션으로 분리하는 것이 좋습니다. 당신/당신의 고객이 정말로 주장한다면, 모든 것을 단일 .dll로 통합하는 최종 "선적"단계를 가질 수 있습니다.

다른 어셈블리 (System, System.Drawing, System.Windows.Forms, System.Xml ...)가 많은 .NET Framework와 비교해보십시오. 아마도 이들 모두는 서로 다른 솔루션에있을 수 있으며, 서로의 빌드 결과를 참조 할 수 있습니다 (모든 솔루션을 하나의 솔루션으로 참조하면서 서로 프로젝트를 참조 함).

0

@Domenic : 실제로 좋은 일일 것입니다. 그러나 팀 전체가 지금 당분간 그 상태에 있으며, 성공할 때까지 단일 .dll 및 아주 획일적 인 뭔가가 붙어 있습니다 .-(단계별로

1

단계 ...

유일한 해결책은 코드 블록을 분리 시작하는 것입니다. 당신이 너무 많이 구현 누설 (아래 참조 **)가없는 경우 뒤에 클래스를 분리 fachades 구축을 시작 그 클립을 다른 프로젝트로 옮기고 fachade가 시작할 때 dll을로드하고 호출을 팩토리 메소드로 리디렉션하도록합니다.

상당히 안정적인 지역/라이브러리를 찾고 격리 된 라이브러리 dll로 나눕니다. 별도로 빌드하고 버전을 지정하면 통합 통증을 피하는 데 도움이됩니다.

나는 과거에 그러한 상황에 처해 있었고, 유일한 길은 인내심을 가지고 작업을 수행하는 것입니다.

그런데 코드 분할의 좋은 부작용은 인터페이스가 더 깨끗해지고 출력 dll 크기가 작아 졌기 때문입니다. 우리 프로젝트에서 코드를 고민/재구성하고 무상 제공을 줄이면 최종 산출물이 30 % 감소했습니다.

행운을 빈다!

** ->를 OBJ 요구하는 소비자> GetMemberZ() -> GetMemberYT-> GiveMeTheData (PARAM1, PARAM2)