문제

사람들이 특히 재사용 가능한 구성 요소와 관련하여 코드 라이브러리를 어떻게 구성하는지 알고 싶습니다. 아래에서 OO 용어로 이야기하고 있지만 다른 유형의 언어를위한 도서관을 구성하는 방법에 관심이 있습니다.

예를 들어:

  • 당신은 모든 것을위한 수업 도서관 프로젝트를위한 스틱 러입니까, 아니면 단일 프로젝트에 모든 것을 유지하는 것을 선호합니까?
  • 사전 제작 된 DLL을 재사용합니까 아니면 현재 작업에 이전 프로젝트의 개별 클래스를 포함합니까? 개별 클래스 인 경우 프로젝트간에 공유하여 모든 것이 최신 상태로 유지되거나 분기를 허용합니까?
  • 재사용 가능한 요소는 얼마나 큽니까? 그들은 얼마나 집중 했습니까? 그들은 어떻게 집중하고 있습니까?
  • 선호하는 관행을 통해 어떤 수준의 재사용을 얻습니까?

등.

편집하다

나는 여기서 구체적인 지침을 찾고 있지 않고 사람들의 생각과 관행에 관심이 있습니다. 특히 단일 프로젝트가 아닌 이질적인 프로젝트 간의 코드 재사용에 관심이 있습니다. (불행히도 여기서 '프로젝트'의 사용은 오해의 소지가 있습니다. 저는 시각적 스튜디오 의미의 프로젝트가 아니라 고객을 위해 수행 된 실제 프로젝트 간의 재사용을 의미합니다.)

도움이 되었습니까?

해결책

일반적으로 안내 할 수 있습니다 전개 고려 사항 :

어떻게 배포 하시겠습니까 (예 : 생산 기계에 무엇을 복사 할 것인가)?

당신이 배포하는 것이 있다면 포장 구성 요소 (예 : DLL, JAR, WAR, ...), "코드 라이브러리"를 다음의 모음으로 구성하는 것이 현명합니다. 포장 파일 세트.
이렇게하면 생산 플랫폼에 배치 될 -dll, jar, war, ... - 직접 발전하게됩니다.
아이디어는 다음과 같습니다. 포장 된 파일에서 작동하는 경우 여전히 제작에서 작동 할 수 있습니다.


단일 프로젝트가 아닌 다른 프로젝트 간의 코드 재사용.

나는 "구성 요소"접근 방식에서 이러한 종류의 재사용이 더 쉽다고 유지합니다 (질문에서 논의 된 것과 같이 ").git의 공급 업체 지점")

40 개가 넘는 현재 프로젝트를 통해 우리는 다음을 달성했습니다.

  • 기술 재사용 순수한 기술적 측면을 독립적 인 프레임 워크 (일반적으로 로그 프레임 워크, 예외 프레임 워크, KPI- 키 성능 표시기 - 프레임 워크 등)로 체계적으로 분리함으로써.
    이러한 기술 구성 요소는 다른 모든 프로젝트에 재사용됩니다.
  • 기능적 재사용 명확하게 설정함으로써 적용 기능적 영역 (비즈니스 및 기능 사양이 주어진)을 잘 정의 된 응용 프로그램으로 나누기위한 아키텍처. 예를 들어, 일반적으로 다른 프로젝트에서 재사용 된 서비스를 노출하기위한 훌륭한 후보 인 버스 계층이 포함됩니다.

요약:
대규모 기능 도메인의 경우 단일 프로젝트를 관리 할 수없고 적용 할 수있는 적용 아키텍처는 자연 코드 재사용으로 이어질 것입니다.

다른 팁

우리는 다음과 같은 원칙을 따릅니다.

  • 릴리스 동등성 원칙 : 재사용의 과립은 릴리스의 과립입니다.
  • 일반적인 폐쇄 원칙 : 패키지의 클래스는 동일한 종류의 변경에 대해 함께 닫아야합니다.
  • 일반적인 재사용 원칙 : 패키지의 클래스는 함께 재사용됩니다.
  • Acyclic Dependencies 원칙 : 패키지 종속성 그래프에서 사이클을 허용하지 않습니다.
  • 안정적인 의존성 원리 : 안정성의 방향에 따라 다릅니다.
  • 안정적인 추상화 원리 : 패키지는 안정적만큼 추상적이어야합니다.

더 많은 것을 찾을 수 있습니다 여기 그리고 끝났습니다 여기.

그것은 당신이 일하는 플랫폼에 달려 있습니다. 저는 (자랑스러운) Java 개발자이며 다음과 같은 의존성을 구성 할 수있는 좋은 도구가 있습니다. Maven 또는 여자 이름

좋은 소스 코드 제어를 결정하는 것이 중요합니다. 이에는 중요하지 않습니다. 라이브러리의 많은 사본을 끝내지 않고 좋아하는 방식으로 전략을 구현할 수 있기 때문입니다. 좋은 분기 지원이 필수적입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top