두 곳에서 파일의 조각을 추적 내가 가진 코드와 같은 나는 두 가지 버전, 즉로 복제 할자식
void myfunc()
{
introduction();
while(condition())
{
complex();
loop();
interior();
code();
}
cleanup();
}
:
void myfuncA()
{
introduction();
minorchangeA();
while(condition())
{
complex();
loop();
interior();
code();
}
cleanup();
}
void myfuncB()
{
introduction();
minorchangeB();
while(condition())
{
complex();
modifiedB();
loop();
interior();
code();
}
cleanup();
extracleanupB();
}
자식이 아니라 콘텐츠를 추적하는 주장 파일보다 크기 때문에 myfuncA
과 myfuncB
에 공통적 인 청크가 있기 때문에 업스트림으로 병합하면 myfunc
으로 변경되어 해당 변경 사항이 myfuncA
과로 모두 전파되어야합니다.? 그렇다면 어떻게?
코드는 myfuncAB
이 조건 A 또는 B를 테스트하여 각 지점에서 올바른 결과를 나타낼 수 있지만 가독성이나 성능을 심각하게 저하시킬 수 있습니다.
git tracks * content *, 실제로. 하지만 강조해야 할 것은 * 트랙 *입니다. 어쨌든 그것은 어떤 것도 만들어 내지 않습니다. –
나는 콘텐츠를 만들지 * 묻지 않았다. :-) 나는 내가 콘텐츠를 복사하고 붙여 넣었다는 것을 인식하고 싶다고 말했다. 코드 복사 및 붙여 넣기는 권장되지 않지만 모든 규칙에는 예외가있을 수 있습니다. "진실"의 원천이 * 있기 때문에 이러한 자식 기능은 DRY 원칙을 즉시 위반하지는 않습니다. 하나의 문제는'myfuncA' 나'myfuncB'에 대한 수정이 다른 것에 수정되어야하고, 이제는 분리되어 있기 때문에 만들어지지 않습니다. 의견에 감사드립니다. – mabraham