[design-patterns] 디자인 패턴을 연구하는 방법? [닫은]

디자인 패턴에 관한 4-5 권의 책을 읽었지만 여전히 디자인 패턴의 중간 수준에 가깝다고 느끼지 않습니까?

디자인 패턴을 어떻게 공부해야합니까?

디자인 패턴에 대한 좋은 책이 있습니까?

나는 이것이 경험과 함께 올 것임을 알고 있지만 이것을 마스터 할 수있는 방법이 있어야합니까?



답변

가장 좋은 방법은 코딩을 시작하는 것입니다. 디자인 패턴은 단지 읽기에 적용하기 어려운 훌륭한 개념입니다. 온라인에서 찾은 샘플 구현을 살펴보고 주변에 구축하십시오.

훌륭한 자료는 Data & Object Factory 페이지입니다. 그것들은 패턴을 다루고 개념적 및 실제적인 예를 제공합니다. 참조 자료도 훌륭합니다.


답변

나는 3 권의 책을 읽었지만 OReilly의 Head First Design Patterns 를 읽을 때까지 패턴을 잘 이해하지 못했습니다 . 이 책은 내 눈을 뜨고 실제로 잘 설명했다.

대체 텍스트


답변

그런 오래된 질문에 대한 내 센트

어떤 사람들은 이미 연습과 리팩토링을 언급했습니다. 패턴에 대해 배우는 올바른 순서는 다음과 같습니다.

  1. 테스트 중심 개발 (TDD) 학습
  2. 리팩토링 배우기
  3. 패턴 배우기

대부분의 사람들은 1을 무시하고 많은 사람들은 2를 할 수 있다고 믿으며 거의 ​​모든 사람이 3을 향해 똑바로갑니다.

저에게 소프트웨어 기술을 향상시키는 열쇠는 TDD를 배우는 것이 었습니다. 고통스럽고 느린 코딩은 오랜 시간이 걸릴 수 있지만 테스트를 먼저 작성하면 코드에 대해 많은 생각을 할 수 있습니다. 강의실에 너무 많은 보일러 플레이트가 필요하거나 쉽게 고장 나면 악취가 아주 빨리 나옵니다.

TDD의 주요 이점은 코드 리팩토링에 대한 두려움을 잃고 매우 독립적이며 응집력있는 클래스를 작성해야한다는 것입니다. 좋은 테스트가 없으면 깨지지 않은 것을 만지기가 너무 고통 스럽습니다. 안전망을 사용하면 코드의 급격한 변화를 경험할 수 있습니다. 바로 연습에서 배우기 시작할 수있는 순간입니다.

이제 패턴에 관한 책을 읽어야 할 시점이 왔습니다. 제 생각에는 너무 열심히 노력하는 것은 시간 낭비입니다. 비슷한 것을하거나 기존 코드에 적용 할 수 있음을 알면 패턴을 실제로 잘 이해했습니다. 안전 테스트 나 리팩토링 습관이 없다면 새로운 프로젝트가 나올 때까지 기다렸을 것입니다. 새로운 프로젝트에서 패턴을 사용하는 문제는 작업 코드에 어떤 영향을 미치거나 변경하는지 알 수 없다는 것입니다. 코드를 리팩터링 한 후에 만 ​​소프트웨어 패턴을 이해했지만 코드에 새로운 코드를 도입 한 적이 없었습니다.


답변

Derek Banas는 내가 좋아하는 패턴을 제거하기 위해 YouTube 튜토리얼을 만들었습니다.

http://www.youtube.com/playlist?list=PLF206E906175C7E07

시간이 조금 단축 될 수 있지만, 그의 타이밍과 프리젠 테이션은 배우기가 매우 즐겁습니다.


답변

연습, 연습, 연습.

몇 년 동안 첼로 연주에 대해 읽을 수 있지만 여전히 악기에 활을 넣고 음악과 같은 것을 만들 수는 없습니다.

디자인 패턴은 높은 수준의 문제로 가장 잘 인식됩니다. 유용한 것으로 인식하는 데 필요한 경험이있는 경우에만 관련이 있습니다. 그것들이 유용하다는 것을 인식하는 것이 좋지만, 그들이 적용되거나 적용되는 상황을 보지 않으면 그들의 진정한 가치를 이해하는 것은 거의 불가능합니다.

다른 코드에서 디자인 패턴을 인식하거나 디자인 단계에서 패턴과 잘 맞는 문제를 인식 할 때 유용합니다. 그런 다음 공식적인 패턴을 조사하고 문제를 조사하고 그들 사이의 델타가 무엇인지, 패턴과 문제에 대해 무엇을 말하는지를 결정하십시오.

실제로 코딩과 동일합니다. K & R은 C의 “성경”일지 모르지만, 그것을 여러 번 읽는다는 것은 단지 하나의 실용적인 경험을 제공하지는 않습니다. 경험에 대한 대체품은 없습니다.


답변

연습 연습 연습. 나는 4-5 권의 책이 약간의 연습을하지 않으면 서 과도한 독서 운동이라고 생각합니다. 이 작업을 수행하는 가장 좋은 방법 은 패턴을 사용 하여 현재 프로젝트리팩토링하는 것 입니다. 또는 현재 진행중인 프로젝트가없는 경우 자신 만의 방식으로 패턴을 리팩토링 해보십시오. .

그들이 해결 한 문제로 어려움을 겪지 않으면 완전히 감사 할 수 없습니다. 그리고 그것들은은 총알이 아니라는 것을 명심하십시오-암기 할 필요가 없으며 즉시 적용하기 위해 강요하지 않아도됩니다. 내 두 센트 ..


답변

다음과 같은 질문을 해보십시오.

그들은 무엇을합니까?

그들은 무엇을 분리 / 결합합니까?

언제 사용해야합니까?

언제 사용해서는 안됩니까?

어떤 누락 된 언어 기능으로 인해 사라지게됩니까?

어떤 기술 부채를 사용하여 발생합니까?

작업을 수행하는 더 간단한 방법이 있습니까?