2008-09-23 5 views

답변

7

는 나는이 말에 더 의미가 있습니다, 그래서 문제는 다시 쓸 수 있다고 생각 :

테스트 - 기반 및 증분 개발 전략을 사용하는 경우 아키텍처 패턴과 전략이 유연성을 달성하기 위해 유용

" ? "

내 대답은 다음과 같습니다 당신처럼, 당신의 clases 및 구성 요소를 분리하는 데 도움 패턴

  • Inversion of Control and Dependency Injection - 런타임 때까지 해결 수업 및 특정 구현에서 분리 된 구성 요소 간의 종속성을 유지하는 데 도움이 (또는 시작 시간) 아직 구현되지 않은 기능과 단위 테스트에 스텁을 사용할 수 있습니다.

  • Facades - 상호 작용을 위해 잘 정의 된 인터페이스를 제공하는 구성 요소를 분리하여 커플 링을 줄이는 데 도움이됩니다.

  • 공장 및 기타 creational patterns - 객체 인스턴스화를 담당하는 코드 섹션에서 유연성을 제공합니다.

또한 증분 반복 개발의 진언 중 하나는 'Do the simplest thing that could possibly work'입니다. 지나치게 엔지니어하지 마십시오.

당신이 물어 본 것에 따라 말이됩니까?

+0

감사 세르지오. 당신은 내 질문을 완벽하게 재구성했습니다. :) 내가 언급 한 패턴을 확인해 보겠습니다. – user20358

-3

Python이나 Ruby와 같은 동적 언어를 사용하여 개발 : 먼저 "디자인 패턴"의 이유 인 다른 언어와 관련된 많은 문제들과 싸울 필요가 없습니다.

자동 테스트와 함께 동적 언어를 사용하면 결과가 매우 빨라 지므로 어느 방향으로 나아갈 지 알 수 있습니다. 그런 다음 성능상의 이유로 정적 언어를 사용하거나 이미 작성한 동적 소프트웨어를 번역 할 수있는 모든 것을 사용해야합니다.

2

나는 이것이 의미있는 질문인지 잘 모르겠습니다. 그러나 나는 그만 두지 않을 것입니다 ...

당신이 선택한 애자일 과정에서 진화함에 따라 특정 패턴이 응용 프로그램 설계의 측면에 적합하다고 분명히 드러날 수 있지만 (잘하면 mis-) Ron Jeffries을 인용하면 "코드에서 알려줍니다".

편집 :하지만 확실한 대답을 원할 경우 브리지. 그거 좋네. 또는 방문자, 나는 저것을 역시 좋아한다. 또는 대부분이 "F"로 시작하는 것입니다. :)

+0

반복적 인 개발에 좋은 반복 패턴이라고 생각합니다. –

+0

감사합니다. – user20358

-1

디자인 패턴은 특정 유형의 문제를 해결하는 데 도움이되는 도구입니다. 패턴의 사용은 개발 방법론이 아니라 요구 사항의 범위에 의해 정의 된 문제에 의해 결정됩니다.

+1

나는 동의하지 않는다. 테스트 주도 개발이 방법론의 일부인 경우 DI 또는 IOC와 같은 특정 패턴의 사용을 요구하는 묵시적 요구 사항으로 "단위 테스트가 가능함"을 볼 수 있습니다. –

4

다른 것들을 혼합하지 마십시오. 패턴이 적용 가능할 때 패턴을 사용하고 시간과 노력을 절약 할 수 있으며 코드를보다 표준화 할 수 있습니다. 개발 방법론과는 아무런 관련이 없습니다!

그러나, 당신은 당신의 애플리케이션 아키텍처에 몇 가지를 강조 할 수 있습니다 :

  • 하는 일이 매우 모듈합니다. 수용 느슨한 커플 링.
  • 명확한 개념적 경계를 모듈간에 정의하십시오 (). 개념적으로 말하면 처음에는 분명해야하며 자연 스럽다고 느낍니다. 무작위 프로그래머가 "와우, 네가 어떻게했는지는 분명하다!"라고 대답해야한다고 물었다.
  • 작은 시작. ZOMG를 만들려고 시도하지 마십시오. 이것은 최고의 보편적 인 도서관 및 프로그램이 될 것입니다. 필요한 경우에만 작업을 수행 한 다음 확장하십시오.
  • YAGNI (당신은 꼭 필요하지는 않습니다)라고 자신을 설득하십시오. 자신이해야 할 일이 확실하지 않은 일을하지 마십시오. 꾸물 거리거나 어떤 것을 의미하지는 않습니다. "나는 모른다, 미래에 유용 할 수도있다", "기술적으로 멋지다", "나는 단지 그것을 위해서 포함 할 것"때문에 일을하지 말라는 의미입니다.
  • DRY - 자신을 반복하지 마십시오. 코드 중복 문제가 발생하지 않도록하십시오. 코드 생성기, 좋은 추상화 및 팀 전체의 의사 소통에 대해 생각해보십시오.
관련 문제