의도적으로 디자인 패턴과 리팩토링을 어떻게 연습 할 수 있습니까? [닫은]


10

패턴 리팩토링 책을 읽고 패턴 을 리팩토링하고 사용하는 새로운 방법에 대한 의도적 인 연습 없이는 기술이 향상되지 않기 때문에 기술을 연습 할 기회를 얻는 방법이 궁금합니다.

그러나 사무는 가능한 빨리 각 작업을 완료해야합니다. 대부분의 경우 프로젝트의 디자인과 아키텍처는 나에 의해 제어되지 않으며 기존 코드와 비슷한 스타일 만 따를 수 있습니다. 때로는 나쁜 디자인의 프로젝트가 있지만 나보다 나은 디자인 기술을 가진 또 다른 개발자가 있고 프로젝트를 리팩토링 할 계획이 이미 있으므로 계획을 따르고 있습니다. 연습 할 기회를 어떻게 얻습니까?

답변:


6

솔직히 말해서 문앞을 두드리며 기회가 올 때까지 기다릴 수는 없습니다. 당신이 기술을 연습하는 데 매우 관심이 있다면, 소위 더 숙련 된 개발자 가 가진 것에 관계없이 당신의 디자인을 가지고 올 수 있다면 좋을 것입니다 . 아이디어를 버리고 기존의 불량 설계에 어떻게 도움이 될지에 대해 대화를 나누십시오. 어쩌면 당신은 처음 몇 시도에 실패하지만 당신은 (또한 본 당신의 소위를 많이 배울 것 보다 숙련 된 개발자 동료 또한 배울 것이있을 것입니다).

한마디로 당신의 디자인을 테이블 위에 올려 놓고 얼마나 좋은지 나쁜지를 아는 것은 당신의 기술을 벤치마킹 할 방법이 없습니다.


3

연습, 연습, 연습. 취미 프로젝트는 확실히 좋은 생각입니다. 그리고 배우고 싶다면, 다른 사람의 오픈 소스 프로젝트에서 일하는 것이 더 좋습니다 . 그렇게하면 그들이 사용하는 패턴에서 배울 수 있습니다.

코딩코드 카타를 살펴볼 것을 제안 합니다. 이 개념의 기본 개념은 잘 정의 된 관리 가능한 연습 문제를 연습함으로써 자신의 코드에서 문제가 발생할 때 더 잘 갖추게된다는 것입니다. (웹 사이트는 내가 한 것보다 더 잘 설명합니다. 확실히 확인하십시오.)

사이드 포인트 : 패턴이 아닌 필수 사항 중 하나는 테스트와 관련하여 올바른 습관입니다.

또한 마지막 의견 : 사무는 각 작업을 가능한 빨리 완료해야합니다. 너무 빨리 작업하고 많은 버그를 만들면 나중에 다시 작업해야하므로 작업을 마치지 않았습니다 . 이것은 재 작업입니다. 일을하는 올바른 방법을 배우는 데 필요한 시간이 걸리지 않으면 단기적으로 더 많은 일을하게되고 장기적으로 개선 할 적절한 패턴을 배우지 않을 것입니다. 적절한 디자인 패턴을 연습하는 것은 귀하와 고용주 모두에게 가치가 있습니다. (그런데, 디자인 패턴을 과도하게 또는 배경 지식없이 연습하는 사람들은 종종 디자인 패턴을 남용하거나 남용 할 수 있지만 이는 별개의 문제입니다.)


재 작업은 흥미로운 주제입니다 .. 37signals.com/rework 는 주제 에 대한 적절한 책입니다.
carpeliam

1
아, 한 가지 더 언급하면 ​​다른 사람들의 패턴을 따르는 것과 함께 진행됩니다. 사무실에있는 사람들을 자원으로 사용하십시오. 그들이 무언가를 리팩토링하는 방법에 대한 계획을 가지고 있다면, 그들의 사고 과정을 설명하고 그들이 당신을 가르치도록 강요하십시오. 사무실이 개인 전문 개발에 초점을 맞추지 않으면 문제가있는 것입니다.
carpeliam

작업이 완료되면 메모에 +1합니다.
Péter Török

1

다음과 같은 옵션이 있다고 생각합니다.

  • 휴무 시간에 대한 연습을 고려하십시오. VCS에 코드를 커밋하지 않고 작업을 유지하고 코드를 리팩토링하는 것을 실험하십시오. 의도적으로 연습하기 위해 변경 사항을 커밋 할 필요는 없습니다. 두 번째 특성이 될 때까지 절차를 재현해야합니다.
  • 의사 소통 기술을 숙달하여 동료와 리팩토링이 더 적합한 지 논의하십시오. Crucial Conversation 은 커뮤니케이션의 메커니즘을 이해하는 데 정말 도움이됩니다.
  • 애완 동물 프로젝트-애완 동물 프로젝트를 만들고 기술을 연습하십시오. 매우 유용 할 필요는 없습니다. 목표는 프로그래밍 기술을 연습하는 것입니다.
  • 오픈 소스 프로젝트에서 서비스를 제안하는 것을 고려하십시오-피드백을 얻을 수 있으므로 의도적으로 연습하는 것이 더 유리합니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.