문제

디자인 패턴을 사용하는 경우에는 세 가지 유형의 상점이 있다고 생각합니다.얼굴에 부딪혀도 패턴을 모르는 사람들은 일반적으로 코드 재사용에 Ctrl-C / Ctrl-V 접근 방식을 선호합니다.하나 이상의 훌륭한 패턴을 구현하기 위해 레거시 코드를 검색하는 데 하루에 몇 시간을 소비하는 사람들은 일반적으로 100년의 유지 관리에 소요되는 것보다 간단한 프로그램의 코드를 리팩토링하는 데 더 많은 시간을 소비합니다.그리고 마지막으로, 의미가 있을 때 패턴을 사용하여 중도를 걷고, 노출이 최소화된 코드를 위해 무엇이든 먼저 코딩하는 사람들입니다.

소프트웨어 개발 수명 주기에서 패턴 사용을 균형 있게 통합하기 위한 좋은 접근 방식을 정한 사람이 있는지 궁금합니다.또한 패턴, 동기 부여 요소 및 적절한 사용에 대한 웹상의 가장 좋은 리소스는 무엇입니까?

감사해요.

도움이 되었습니까?

해결책

세상에는 다양한 '패턴' 계열이 있지만 질문을 가장 광범위한 용어로 받아들이면...

나는 다음을 추천합니다:

  • 짐 코플리엔의 조직 패턴
  • 힐사이드 그룹 위키
  • 케블린 헤니의 대지 훌륭한 링크와 논문이 많이 있습니다

오프라인(내가 가장 좋아하는 것):

오프라인(인기):

  • GoF 디자인 패턴
  • 파울러의 리팩토링:기존 코드의 디자인 개선

다른 팁

패턴을 잘 활용하려면 지식과 경험이 필요합니다.거기에는 공식이 없습니다.패턴을 신중하게 적용한 경험이 있는 사람이 팀 내 다른 모든 사람의 코드를 정기적으로 검토하여 디자인 패턴을 과도하게 사용하거나 적게 사용하지 않는지 확인하는 것이 좋습니다.이는 미리 구운 레시피가 아닙니다. 효과적으로 적용하려면 기술이 필요하며 이를 배워야 합니다.

디자인 패턴에 대한 나의 첫 번째이자 최고의 노출은 포틀랜드 패턴 저장소.

"패턴"의 사용은 다음과 같이 크게 달라집니다.

  1. 사용된 언어
  2. 달성하고 싶은 목표.

디자인 패턴은 C++, Java 등과 같은 언어에서 과대평가된 이름을 가질 수 있습니다.그들은 모든 종류의 타이핑 문제로 인해 발생하는 경직성을 숨깁니다.덜 제한적인 언어에서 어떤 패턴이 "생존"하는지에 대한 링크는 다음과 같습니다.http://norvig.com/design-patterns/

또 다른 예는 측면 지향 프로그래밍으로, 이를 위해 "설계"되지 않은 언어로 많은 노력을 기울여 "도입"합니다.

사용된 도구 뒤에 숨은 철학도 큰 영향을 미칩니다.Smalltalk, Common Lisp, Haskell 등의 평균 PHP 또는 Visual Basic 프로그램과 솔루션을 비교해 보겠습니다.

구문 요소도 큰 영향을 미칩니다.C, C++(반복자)에서 수많은 유사한 루프를 볼 수 있지만 고차 함수를 지원하는 언어를 살펴보면 몇 개의 루프만 찾을 수 있습니다.

그런 다음 사람들이 프로그래밍에 접근하는 방식, 상향식 또는 하향식, 단편적인 성장 또는 피라미드 구축 또는 기타 개인 선호도를 확인해야 합니다.

언급된 링크를 읽고 "다른" 언어로 구현을 확인하는 것이 좋습니다....

Friedrich에 안부

모두가 항상 패턴을 사용하고 있습니다.그들은 그것을 모를 수도 있습니다.'목록 반복'과 같은 간단한 것조차도 패턴입니다.

내 생각에 패턴을 작업 주기에 통합하는 가장 좋은 방법은 패턴을 사용하고 논의할 때나 코드에 주석을 달 때 이름으로 참조하는 것입니다.이를 통해 지식이 확산되기를 바랍니다.

예를 들어, 당신이 하는 일이 Observer에 매우 적합하다는 것을 발견했다고 가정해 보겠습니다.당신은 동료에게 "이 개체를 관찰자로 만들고 이 개체를 주제로 만들면 정말 쉽습니다."라고 말합니다.

동료가 즉시 이해하게 될 것입니다. 이는 시간을 절약해 주는 패턴입니다. 아니면 귀하가 동료를 교육하고 다음 Observer에 대해 언급하면 ​​그들은 즉시 이해할 것입니다.

동시에, 당신은 지식을 전파하고 있으며, 그들은 당신에게서 배운 새로운 패턴을 사용할 기회를 발견할 것입니다.물론 이것은 양방향으로 진행됩니다.다음번에는 그럴 수도 있겠네요 그들을 가르치는 새로운 패턴.

이 모든 것은 동료가 고개를 끄덕이고 이해하지 못하는 것을 이해하는 척하는 유형이 아니기 때문에 발생합니다."야, Observer에 대해 언급하셨는데 그게 뭔지 모르겠어요."라고 말해야 합니다.

패턴과 리팩토링에 대한 정보가 포함된 최고의 웹 리소스는 다음과 같습니다. http://sourcemaking.com

나는 이 시리즈의 열렬한 팬이고 그들의 책을 많이 읽었으므로 추천하고 싶습니다. 헤드 퍼스트 디자인 패턴.O'Reilly's를 통해 온라인으로 읽을 수 있습니다. 사파리 책장, 하지만 하드 카피에는 훌륭한 패턴 포스터도 함께 제공됩니다.

위의 의견에 더 이상 동의할 수 없습니다.나는 특정 패턴의 이점을 진정으로 이해하기 위해 항상 나머지 팀원들에게 의존할 수 있는 디자인 패턴을 사용합니다.그렇지 않으면 보기 흉한 코드와 패턴과 어느 정도 유사한 가벼운 래퍼로 끝나게 됩니다.

여담으로 http://www.developer.com 디자인 패턴과 그 응용에 관한 기사를 한 달에 몇 개 게재합니다.행운을 빌어요!

추천해야 할 것 같아요 리팩토링:기존 코드의 디자인 개선.

Refactoring: Improving the Design of Existing Code
(원천: 2020ok.com)

패턴의 합리적인 사용을 구현하는 방법에 대한 많은 예입니다.

정의와 원래의 대답은 개념의 기원입니다. 디자인 패턴.이 책은 해당 분야에 침투한 경영 이야기가 아닌 매우 이론적인 수준의 개념을 다루고 있다.그들의 견해는 디자인 패턴이 단지 일반적인 관용어의 이름일 뿐이라는 것입니다.그들은 일부를 열거하고 그들의 입장을 정당화합니다.

그들은 "어떤 디자인 패턴을 사용해야 합니까?"라는 질문을 피하고 "나는 잘 알려진 분야에 자연스럽게 발을 들여놓고 있는가?"라는 문제를 다룬다.그렇다면 다른 사람들의 경험이 나를 도와줄 수 있나요?"나에게 디자인 패턴은 솔루션을 만들기 위해 함께 접착하는 조립식 구성요소와는 다릅니다.이는 다른 사람들이 반박한 것과 유사한 상황에 직면했을 때를 위한 지침 저장소일 뿐이며, 사람들이 대화에서 일반적인 상황을 참조할 수 있도록 이름을 제공합니다.

디자인 패턴은 적용 가능한 패턴을 완전히 이해해야만 패턴을 어디에 사용해야 할지 알 수 있다는 점에서 재미있습니다.Strategy, Observer, Iterator 같은 것들은 조금만 연습하면 너무 깊게 생각하지 않고도 사용할 수 있습니다.C#을 사용하는 경우 패턴으로 생각하지 않고 항상 Iterator(IEnumerable...)를 사용합니다.

내 생각에는 이런 단순한 패턴이 최고의 패턴이다.당신은 이미 해야 할 일을 갖고 있고, 문제가 해결되지 않을 때 문제를 하나씩 패턴으로 묶어내려고 노력하고 있습니다. 상당히 fit은 시간 낭비이며 잘못된 코드를 초래합니다.

내 조언은 패턴을 찾기 위해 UML 다이어그램을 살펴보고, 패턴이 매우 간단하다면 나중에 기억할 수 있을 만큼 잘 배우도록 하라는 것입니다.계약이 더 간단한 패턴이 더 자주 유용할 가능성이 높습니다.

나는 Gang of Four의 Design Patterns 책을 직접 읽고 싶습니다.

나는 이러한 참고 자료에 동의하지만 초보자에게 친숙하지 않습니다.디자인 패턴을 쉽게 학습하려면 다음 단계를 따르세요.

머리부터 먼저 :디자인 패턴

그런 다음 큰 그림을 얻은 후에는 더 고급 책을 확인할 수 있습니다(많은 실제 예제 ;-))

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