2013-08-04 6 views
0

하나의 소스 파일에 들어갈 수없는 너무 큰 프로그램을 만들 때 처음 시도 할 때 여러 파일로 분리하는 문제가 계속 발생합니다. 예를 들어, 하나의 모듈이 다른 여러 모듈에 의해 사용될 경우, 결국 서로 포함될 수 있습니다. 말하자면, linear_algebra.cpp (또는 .py 또는 무엇이든) tensor_operations.cpp가 필요하며, 둘 다 matrix_operations.cpp가 필요합니다. matrix_operations.cpp를 두 파일에 모두 포함시켜야합니까? 그리고 만약 matrix_operations를 다른 모듈에 추가한다면, 어떤 시점에서 갑자기 linear_algebra가 필요하게됩니다. 이 모든 업무는 나를 계속 혼란스럽게합니다. 때때로 나는 그것을 알아 낸다. 그러나 "적절한"방법이 있어야한다. 그래서 당신 자신에 의해 알아낼 필요가 없다.모듈을 구성하는 방법은 무엇입니까?

그래서 "나는 이런 종류의 물건"이라고 말할 때 Google이 나를 이해하지 못하기 때문에 어떻게 이런 종류의 물건을 적절하게 (또는 적어도 무엇이라고 부르는 지)에 대한 매뉴얼을 얻을 수 있습니까?

답변

2

주기적 종속성을 검색하는 것처럼 들리 겠지만 검색하려는 핵심 용어입니다.

예를 들어 모듈 A와 B가 있고 A가 B 을 참조해야하는 경우 B가 A를 참조해야한다는 것을 알게되면 A와 B 사이의 주기적 종속성을 갖게됩니다. 즉, 의존성을 나타내는 화살표가있는 그래프로 모듈 간의 관계를 그렸습니다. A와 B 사이에 화살표가 있습니다.)

해결책은 B에서 필요로하는 A에서 코드의 비트를 식별하는 것입니다. 밖으로 새 모듈 C에 다음 A와 B 모두에서 C를 참조 (이것은 B는 더 이상 참조 할 필요가 없다는 것을 의미합니다.)

그래서 당신이

0에서 이동
A <----> B 

이렇게함으로써

A -----> B 
|  | 
\/  | 
/ | 
C ------ 
    \ 

에, 당신은 그들 사이의 느슨한 결합과 많은 작은 모듈에 몇 대형 모듈에서 이동합니다. 이렇게하면 코드를 유지 관리하고 재사용하기가 더 쉬워집니다.

+0

적어도 순환 적 종속성에 관한 것은 아닙니다 (적어도 명확히 해두는 데 대해 감사하지만). 문제는 좀 더 일반적입니다 : 일반적인 경우에 프로그램 모듈을 배열하고 구성하는 방법은 무엇입니까? 전체 매뉴얼이 있습니까? – user2649762

+0

* Code Complete * 또는 * The Pragmatic Programmer *와 같은 책을 확인하십시오. 이것들은 느슨한 커플 링 (loose coupling)과 높은 결합력 (cohesion)과 같은 몇 가지 원칙을 제공합니다. 그러나 "숫자로 페인트"솔루션은 없습니다. 모든 프로그램이 다릅니다. –

관련 문제