문제

다음에 코드의 어느 부분(클래스, 모듈, 라이브러리)을 통합하거나 리팩토링할지 결정하기 위해 측정항목을 사용하시나요?

도움이 되었습니까?

해결책

자동으로 계산할 수있는 메트릭을 사용하지 않습니다.

나는 사용한다 코드 냄새 그리고 나쁜 코드를 감지하기 위해 비슷한 휴리스틱을 발견 한 다음, 알게 되 자마자 수정하겠습니다. 문제에 대한 점검 목록이 없습니다. 대부분 "이 코드가 지저분 해 보인다"는 느낌이 들었고 왜 지저분하고 해결책을 알아내는 이유를 추론합니다. 변수에보다 설명적인 이름을 제공하거나 방법을 추출하는 것과 같은 간단한 리팩토링은 몇 초 밖에 걸리지 않습니다. 클래스 추출과 같은보다 집중적 인 리팩토링은 최대 1 ~ 2 시간이 걸릴 수 있습니다 (이 경우 나중에 Todo 의견을 남기고 나중에 리팩터링 할 수 있습니다).

내가 사용하는 중요한 휴리스틱은 하나입니다 단일 책임 원칙. 그것은 수업을 멋지게 응집력있게 만듭니다. 어떤 경우에는 클래스에 여러 책임이 있는지 여부에 관계없이 코드 라인에서 클래스의 크기를 코드 라인에서 더 신중하게 찾는 휴리스틱으로 사용합니다. 내 현재 프로젝트 Java를 작성할 때 대부분의 수업은 100 줄 미만이며, 종종 크기가 200 줄에 접근 할 때 클래스는 많은 관련이없는 일을 수행하고 더 많은 것을 얻을 수 있도록 분할 할 수 있습니다. 집중된 응집력 수업.

다른 팁

새로운 기능을 추가해야 할 때마다 비슷한 기능을 수행하는 기존 코드를 검색합니다.그러한 코드를 찾으면 원래 작업과 새 작업을 모두 해결하기 위해 리팩토링을 생각합니다.물론 매번 리팩토링하기로 결정하지는 않습니다. 대부분의 경우 코드를 있는 그대로 재사용합니다.

나는 일반적으로 "주문형", 즉 코드에 구체적이고 즉각적인 문제가있는 경우에만 리팩터 만 리팩토링합니다.

종종 새 기능을 구현하거나 버그를 수정해야 할 때, 코드의 현재 구조가 다음과 같이 어렵다는 것을 알게됩니다.

  • 복사 및 붙여 넣기 때문에 변경하기에는 너무 많은 곳
  • 부적합한 데이터 구조
  • 변경해야 할 일은 하드 코딩 된 것들
  • 이해하기에는 너무 큰 방법/수업

그런 다음 리팩터를 리팩터 할 것입니다.

때때로 문제가 발생하고 변경하고 싶은 코드가 보이지만 지역이 현재 작업 중이 아닌 경우 충동에 저항합니다.

리팩토링은 코드를 방지하는 것과 실제로 즉각적인 가치를 생성하지 않는 일을하는 것 사이의 균형으로 본다. 그러므로 나는 구체적인 요구가 보이지 않으면 일반적으로 리팩터를 재현하지 않을 것입니다.

일상적인 문제로 재현하는 사람들의 경험에 대해 듣고 싶습니다. 중요한 기능을 위해 시간을 잃어 버리는 방법을 어떻게 연마하는 것을 막을 수 있습니까?

우리는 사용 cyclomatic_complexity 다음에 리팩토링 해야하는 코드를 식별합니다.

나는 사용한다 소스 모니터 복잡성 메트릭이 8.0 정도가되면 정기적으로 리팩터 방법.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top