2012-05-22 4 views
-1

많은 클래스에서 코드 리팩토링/코드 검토를 수행해야했습니다.노력 견적을 수행하는 방법은 무엇입니까?

3000 이상의 파일에 필요한 노력을 체계적으로 어떻게 계산합니까? Google은 각 파일의 평균 순환 복잡도 측정 항목을 계산하는 CodePro AnalytiX를 보유하고 있습니다.

기준 추정에 사용할 수있는 측정 항목/도구는 무엇입니까?

+3

Hofstadter의 법칙 : Hofstadter의 법칙을 고려하더라도 항상 예상보다 오래 걸립니다. –

답변

0

손으로 직접하는 경우에는 오랫동안이 작업을 수행 할 가능성이 있습니다. 3000 파일이 5 분 동안 기회가 있는지 검사하는 데 얼마나 걸리나요? 재 컴파일/재검색/재검사/재검사를하는 데 1 시간에 300 번 파일을 보내는 데 걸리는 시간은 얼마나됩니까?

필자는 원형 숫자를 푸시하기 위해 리팩토링을 많이하는 팬이 아닙니다.

기술적 인 측면에서 볼 때, 조건을 포함하는 코드를 도우미 함수로 옮겨서 두 가지로 나누는 것이 기술적으로 쉽습니다. 이제는 개별 기능의 사이클 측정 비용이 감소했습니다. 여기서 어려운 점은 분리 점을 찾고, 매개 변수를 매개 변수화/이동하고, 코드를 움직여서 새로운 기능을 고안하고, 코드 선을 옮기는 것입니다. 손으로 짓는이 꿀꺽 거리는 일은 오류가 발생하기 쉽고, 그것은 당신을 곤경에 빠지게 할 것입니다; 어떻게 시험하나요?

실제로이 작업을 수행하고 고통을 최소화하려는 경우 리팩토링을 구현하는 자동화 도구를 사용해보십시오. 이 작업은 대부분의 수작업을 제거하고 코드 위반 문제를 방지합니다.

우리의 DMS Software Reengineering Toolkit은 코드를 분석/분석/변환 할 수 있으며 많은 langauge front ends을 가지고 있습니다. DMS는 커스텀 애널라이저 (예 : "함수 또는 명령문 블록의 순환 연산 복잡성 계산") 및 커스텀 변환 ("복잡한 명령문 블록을 도우미 함수로 이동")을 빌드하는 수단을 제공합니다. 도우미 함수 이름의 선택을 자동화해야합니다. 아마도 "foo"를 나눠 쓰면 "foo_helper"가 생성됩니다.

나중에 도우미 기능의 유지 관리자는 기계적으로 선택된 도우미 함수 이름에 대해 덜 복잡한 거래로 인해 인상을받지 못할 수도 있습니다.

+0

언어의 변환은 없지만, 모든 계층의 비즈 로직을 가정하는 위치로 다시 설계/리 팩터합니다. 뿐만 아니라 시스템의 트랜잭션 처리를 개선합니다. – youcanlearnanything

+0

@optimus : 죄송합니다. 귀하의 의견을 이해할 수 없습니다. 논의의 맥락은 순환 적 복잡성을 최소화하기 위해 (자동화 된) 리팩토링이었습니다. 예, DMS는 아키텍처 재구성 [예 : "비즈 로직을 이동"] 및/또는 코드 최적화 [거래를 돕는 방법]를 포함한 다른 대규모 변경 작업을 수행 할 수 있습니다. –

0

데이터에서 무엇을 얻을 것으로 예상됩니까?

잘 수행하려면 그렇게 할 수 없습니다. 클래스 X가 복잡성 Y 방법을 가지고 있음에도 불구하고 테스트를 얼마나 잘 수행했는지, 다른 클래스와의 상호 작용이 얼마나 복잡한 지, 논리가 얼마나 파열되었는지는 여전히 알 수 없습니다.

목표를 공격 한 후에 클래스를 공격하는 경우 Clover에게 당신이 들어야 할 고통에 대한 매우 근사한 생각을 제공 할 것을 권합니다. 그러나 "100 % 적용 범위"가 소프트웨어 개발의 목표이라고 생각하는 사람들과 함께 일한다면 이것은 쓸모 없을 것입니다.

+0

괜찮은 리팩토링은 코드를 깨뜨리지 않으므로 "얼마나 잘 테스트 된"것은 무의미합니다. 리팩터링이 수동으로 수행되면 괜찮은 결과를 가져올 수 있습니다. –

+0

작은 메서드로 메서드를 분할하고 도구를 사용하려는 경우 도구가 작동하는 동안 여전히 신뢰할 수 없습니다. 리팩토링은 도구를 사용하더라도 어느 정도의 테스트가 필요합니다. 그러나 이것은 리팩터링 이야기의 일부일뿐입니다. 코드를보고 더 나은 방법을 만드는 것은 거의 "방법을 끌어내는"경우에 불과합니다. 당신은 시험이 필요합니다. –

관련 문제