레거시 코드의 리팩토링을 연습하기위한 Katas 코딩


123

최근 몇 달 동안 katas 코딩에 관심이 많았습니다. 나는 그것이 내 프로그래밍 기술을 연마하고 내가 작업에서 작성하는 코드의 품질을 향상시키는 좋은 방법이라고 믿습니다.

Katas를 찾을 수있는 곳이 많이 있습니다. 처럼..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

나는 이것들이 Katas의 훌륭한 저장소라는 것을 알았습니다. 그들 중 일부에 대한 나의 시도는 엄청난 보람이있었습니다.

그러나 지금까지 본 모든 Kata에는 한 가지 부족한 점이 있습니다. 그들 중 어느 것도 나쁜 코드를 리팩토링하는 연습을 허용하지 않는 것 같습니다. 처음에 깨끗한 코드를 작성하는 방법을 배우는 것은 대단한 일이지만, 현재 직장에서는 새 코드를 작성할 기회가 너무 많지 않습니다. 오히려 나는 종종 레거시 코드와 싸우고 모듈을 리팩터링하고 종속성을 제거하며 결합을 줄이는 방법을 알아 내려고 노력합니다.

따라서 레거시 코드를 리팩토링하고 깨끗한 코드로 바꾸는 기술을 연마하는 데 사용할 수있는 몇 가지 Katas를 찾고 있습니다.

이미 존재하는 것을 아는 사람이 있습니까? 나는 내가 일하는 동안 많은 연습을한다는 것을 알고있다.하지만 나는 내 능력을 향상 시켜서 클래스에서 의존성을 분리하고 관심사를 분리하는 방법을 빨리 볼 수있을 정도로 연마하고 싶다. 너무 많이하세요.


유용한 정보가 제공된 +1 좋은 질문
KLE

+1 이상 줄 수 있으면 좋겠어요 :) 좋은 질문입니다. 이런 종류의 프로그래밍 연습에 대해 생각해 본 적이 없습니다 ...
FallenAvatar

누군가가 실제로 레거시 코드의 리팩토링을 위해 특별히 작은 시스템을 게시하는 것을보고 싶습니다. Michael Feathers의 리팩토링이 빛날 부분이있는 부분이 있습니다. 나는 지금까지 일주일 이상 이와 같은 것을 찾고 있었다. 누군가? 누군가? :)
Derick Bailey

좋은 질문. @Ryan이 답장에서 언급 한 것을 연습 할 수 있습니다. 나는 giithub 저장소를 포크하는 것이 좋습니다 : github.com/garora/TDD-Katas 역사를 살펴보고 이러한 Katas가 어떻게 리팩토링되는지 확인할 수 있습니다.
Gaurav Aroraa

답변:


92

직접 카탈로그를 작성하는 사이트는 모르지만 가끔 사용한 전략 중 하나는 다음과 같습니다.

  1. Sourceforge에서 오래되고 작고 관리되지 않는 오픈 소스 프로젝트 찾기
  2. 다운로드하고 컴파일 / 빌드 / 실행합니다.
  3. 문서를 읽고 코드에 대해 알아보십시오.
  4. 레거시 코드효과적으로 작업하기 의 기술을 사용하여 테스트중인 코드 를 가져옵니다.
  5. 해당 부분을 리팩터링하여 버그를 수정하고 그 과정에서 기능을 추가 할 수 있습니다.
  6. 4 ~ 6 단계를 반복합니다.

특히 어려운 부분을 발견하면 작업을 버리고 몇 번 반복하여 기술을 강화하십시오.

이것은 리팩토링을 연습하는 것이 아니라 코드 읽기, 테스트 및 빌드 프로세스 처리와 같은 다른 기술입니다.

가장 어려운 문제는 계속 작업 할 수있을만큼 관심이있는 프로젝트를 찾는 것입니다. 마지막으로 작업 한 것은 유전 프로그래밍을위한 파이썬 라이브러리 였고 현재 작업중인 것은 Java 용 IRC 라이브러리입니다.


4
+1 매우 흥미로운 제안. 말했듯이 까다로운 것은 적절한 프로젝트를 찾는 것입니다. 나는 이것을 많이 고려할 것이다. 아마도 나 또는 다른 사람들이 매우 유용한 일부를 찾으면 Kata로 어딘가에 저장하고 문서화 할 수 있습니다.
mezoid

3
"레거시 코드 다루기"- "레거시 코드로 효과적으로 작업"을 의미합니까? amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/…
TrueWill

1
예, "레거시 코드로 효과적으로 작업"을 의미합니다. 잡아 주셔서 감사합니다!
Ryan

21

네크로맨서가 그런 오래된 스레드에 답하는 것 같은 느낌이 들지만, 가치있는 추가를 할 수있는 한 가지가 있습니다. - Legacy Code Retreat .

아이디어는 레거시 코드 로 코드 리 트리트 (Code Retreat )를 갖고이를 처리하기위한 바로 그 기술을 연습하는 것이지만, 단순히 준비된 코드를 사용하고 스스로 연습하는 것을 금지하는 어떤 것도 볼 수 없습니다. Golden Master를 만드는 데 사용하는 것만으로도 한 시간이 걸리며 할 수있는 일이 훨씬 더 많습니다. 당신의 kata가 보통 2 시간 정도 지속된다면, 나는 LCR에서 일반적으로 일어나는 일을 kata로 나누는 것만으로 네 가지 작업을 할 수 있다고 말하고 싶습니다.

있다 GitHub의 저장소 당신이 작업에 있다는 간단한 레거시 시스템, 퀴즈 게임이 포함되어 아이디어의 저자, JB Rainsberger에 의해이.

주최자 / 참가자로서의 경험을 통해 사람들은 이것을 정말 좋아했으며 레거시 코드에서 문제가 될 수있는 것이 무엇인지, 리팩토링이 당신을 길을 잃을 수있는 곳 (그리고 어떻게!)을 볼 수 있다는 것을 알았습니다. Andreas Leidig 의 또 다른 설명이 있습니다.


20

Emily Bache에는 몇 가지 리팩토링 katas가있는 github 저장소가 있습니다. Emily Bache의 Refactoring Kata Repo . 리팩토링 할 KataYahtzee 및 KataTennis의 변형이 있습니다. 또한 그녀는 리팩토링 카타로 설계된 Gilded Rose Kata의 변형을 가지고 있습니다.

또한 그녀는 자신의 레포 인 Racing Car Kata에 Racing Car Katas를 가지고 있습니다. Race Car Katas에는 리팩토링을위한 좋은 연습도 포함되어 있습니다.

그 kata에는 여러 언어로 된 코드가 있습니다.

  • C ++
  • 씨#
  • 자바
  • 자바 스크립트
  • 파이썬
  • 루비

4
Emily는 또한 Katas를 나열하고 코딩 작업을 시작하고 실행하는 방법을 설명하는 The Coding Dojo Handbook 책을 출판했습니다. : 내가보기 엔 책을 추천 leanpub.com/codingdojohandbook
기독교 Maslen

1
나는 그녀의 책을 도장을 운영하는 데 사용했으며 이것이 훌륭한 자원이라는 데 동의합니다. Emily는 pluralsight.com/courses/the-coding-dojo에도 관련 과정이 있습니다.
Steve Clanton 2015 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.