문제

다른 사람이 재사용하거나 업그레이드 할 가능성이 거의없는 사이트에서 인터페이스 및 종속성 주입을 구현 해야하는 이유는 무엇입니까?

도움이 되었습니까?

해결책

컴퓨터를 프로그래밍하는 방법을 배웠을 때, 당신은 당신의 공예의 일종의 '근육 기억'을 개발하고있었습니다. 수년에 걸쳐, 당신은 같은 사고 방식으로 계속 프로그램을 진행합니다. 대부분의 사람들은 처음부터 모든 Nifty OOP 원칙을 배우지 않으므로 배운 방식보다 더 많은 노력 인 것처럼 보입니다.

OOP 언어를 사용할 때마다 OOP 디자인 기술을 사용하는 습관이 있어야합니다. 목표는 이러한 기술을 사용하기 위해 프로그래밍의 근육 기억을 재교육하는 것입니다. 그런 다음 이러한 질문을 할 필요가 없으며 기술이 어떻게 든 프로그래밍의 '길을 가고있다'고 가정합니다. 당신은 그런 식으로 프로그램하는 프로그래머가됩니다.

다른 팁

그것은 종종 단위 테스트를 상당히 단순하게 만듭니다. 예를 들어, 데이터베이스에 연결하는 다른 유형을 사용하는 유형이있을 수 있습니다. 첫 번째 유형을 테스트하는 경우 두 번째 유형 대신 테스트 모의를 주입하여 두 번째 유형을 통해 데이터베이스에 간접적으로 연결하지 않고 첫 번째 유형을 효과적으로 장치 테스트 할 수 있습니다.

왜, 왜?

인터페이스와 주입은 재사용 또는 업그레이드에 관한 것이라고 생각하지 않습니다.

개인적으로 저는 모든 프로젝트에 인터페이스와 DI를 사용합니다. 그들에게 혜택을 피할 수있는 오버 헤드가 충분하지 않습니다.

당신이 만들고 있다는 가정은 같은 가정이기 때문에 Y2K를 초래했습니다.

아직 생각하지 않은 방식으로 코드를 재사용하는 것이 훨씬 쉽다는 것을 알았습니다. 또한 소스 코드를 변경하지 않고 코드가 작동하는 방식을 쉽게 변경할 수 있습니다.

나는 사용 중입니다 Spring.net 의존성 주입.

Dowork () 함수가있는 기계 클래스가 있다고 가정 해 봅시다. 그런 다음 각 컴퓨터의 특정 알고리즘 구현과 함께 iWorkAlgorithm 인터페이스를 만듭니다.

기계의 각 인스턴스에는 iWorkAlgorithm이 주입되어 있으며 machine.dowork ()는 주입 된 구현을 호출합니다.

이제 다음과 같은 장점이 있습니다.

  1. XML 파일을 편집하면 새 구현을 교체 할 수 있습니다.
  2. XML 파일을 편집하여 각 구현 (타임 아웃, 한도 등)의 속성을 변경할 수 있습니다.
  3. 기계 클래스 외부에서 구현을 재사용 할 수 있습니다.

객체 지향 프로그래밍을 수행하는 경우 코드를 볼 수있는 유일한 개발자이더라도 단위 테스트를해야하며 종속성 주입을 사용하지 않으면 복잡해집니다.

소프트웨어의 "다른 개발자"가 당신이 될 수 있다는 것을 잊지 마십시오. 당신은 잘 작동하는 상호 의존적 인 코드를 함께 해킹하고 작업 중에도 이해할 수 있지만 프로젝트에서 벗어나는 순간, 며칠 동안조차도 시작할 수 있습니다. 실의 공이 풀리지 못하게하는 모든 작은 것들을 잊어 버립니다.

당신이 그것으로 돌아올 때 (그리고 나는 아직도 약간의 변화가 필요하지 않은 소프트웨어를 보지 못했을 때, 당신은 당신이 모든 모범 사례를 따르기를 바랍니다.

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