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

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

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

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

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

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

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

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



답변

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

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

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

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

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


답변

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

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

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

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


답변

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 ++
  • 씨#
  • 자바
  • 자바 스크립트
  • 파이썬
  • 루비

답변