2009-04-13 2 views

답변

3

자동으로 계산할 수있는 측정 항목은 사용하지 않습니다.

나는 불량 코드를 탐지하기 위해 code smells 및 유사한 휴리스틱을 사용하고, 알아 차린 후 즉시 수정하겠습니다. 문제를 조사하기위한 체크리스트가 없습니다. 대부분 "이 코드가 더러워 보입니다"라는 느낌이 들었습니다. 그런데 왜 지저분하고 해결책이 필요한지 추론합니다. 변수에 더 알기 쉬운 이름을 지정하거나 메소드를 추출하는 것과 같은 간단한 리팩터링은 몇 초 밖에 걸리지 않습니다. 수업 추출과 같이보다 집중적 인 리팩터링은 1 ~ 2 시간이 걸릴 수 있습니다 (이 경우 나중에 TODO 코멘트와 리팩터링을 남길 수도 있음).

내가 사용하는 중요한 휴리스틱은 Single Responsibility Principle입니다. 그것은 수업을 멋지게 일관되게 만듭니다. 어떤 경우에는 코드의 라인에 클래스의 크기를 사용하여 클래스가 여러 가지 책임을 지는지 여부를보다 신중하게 판단하기위한 경험적 방법으로 사용합니다. 내 current project에서 나는 Java를 작성할 때 클래스의 대부분이 100 줄 미만이 될 것이며, 종종 크기가 200 줄에 가까워지면 클래스는 많은 관련이없는 것들을 수행하고이를 분할 할 수 있다는 점을 알아 챘습니다. 보다 집중된 응집력있는 수업을 듣기.

+0

간혹이 코드는 너무 복잡하고 수정할 때마다 나를 깜짝 놀라게합니다. – cgp

0

우리는 Cyclomatic_complexity을 사용하여 다음에 리팩터링해야 할 코드를 식별합니다.

0

복잡도 메트릭이 8.0을 넘어 서면 Source Monitor을 사용하고 일반적으로 리팩터링 방법을 사용합니다.

2

새로운 기능을 추가해야 할 때마다 유사한 기능을 수행하는 기존 코드를 검색합니다. 그런 코드를 찾으면 원래 작업과 새로운 작업을 모두 해결하기 위해 리팩터링한다고 생각합니다. 분명히 매번 리팩터링하기로 결정하지 않습니다. 대부분 코드를 그대로 재사용합니다.

1

나는 일반적으로 "주문형"리팩토링 만합니다. 즉, 코드에 구체적이고 즉각적인 문제가있는 경우입니다. 때문에 복사 & 페이스트 변경

  • 너무 많은 장소 : 나는 새로운 기능을 구현하거나 버그를 수정해야 할 때

    는 종종, 나는 코드의 현재 구조 등이 어렵게 것을 발견

  • 방법을 변경해야
  • 일이 하드 코딩
  • 적합하지 않은 데이터 구조/너무 큰 클래스는 이해하기

그러면 리팩토링 해드립니다.

가끔 문제가되는 코드를보고 변경하고 싶지만 현재 작업중인 영역이 아니라면 그럴 수 없습니다.

리팩토링은 코드의 장래성을 교정하고 실제로 즉각적인 가치를 생성하지 않는 작업 사이의 균형을 유지합니다. 따라서 필자는 구체적인 필요가 없으면 일반적으로 리펙토링하지 않을 것이다.

일상적인 문제로 리팩터링하는 사람들의 경험에 대해 듣고 싶습니다. 중요한 기능을 위해 시간을 낭비하지 않도록 어떻게 연마를 중단합니까?

관련 문제