2016-07-18 9 views
0

코드 리팩토링은 일반적으로 더 적합한 패턴을 적용하고 코딩 규칙을 적용하거나 성능을 향상시키는 문제입니다. 반면 리팩토링은 시간을 소비하고 새로운 버그를 포함 할 위험이 있습니다.코드 조각을 리팩토링할지 여부를 결정하는 데 사용되는 기준은 무엇입니까?

코드 단위를 리팩토링할지 여부를 결정하기 위해 어떤 기준을 사용해야합니까?

내 추측은 다음과 같습니다

  • 시험 범위는 얼마나 좋은? 코드가 많을수록 리펙토링의 부작용이 줄어 듭니다.
  • 코드의 중요도는 어느 정도입니까? 더 중요한 것은 버그의 영향이 더 높습니다.
  • 리팩터링의 이득은 어느 정도입니까? 이것은 매우 주관적으로 보입니다. 그 이유가 성능이라 할지라도 느린 버전은 유지 보수가 잘되거나 이해하기가 더 쉬울 수 있습니다.

평가해야 할 다른 측면은 무엇이며이를 결정하기위한 수식 또는 시스템이 있습니까? 나는 과학적이거나 적어도 체계적인 접근법을 찾고있다.

편집 : 나는이 질문이 내가 실제로 알고 싶어하는 것 같지 않은 것이라고 생각한다. 오히려 : 가능한 코드 냄새를 발견하면 어떻게 우선 순위를 지정하고 전달합니까? 하나의 리팩토링을 다른 것보다 더 중요하게/긴급하게 만드는 것은 무엇입니까?

답변

1

리팩토링을 할 때 여러 가지 상황과 이유가 있습니다. 예를 들어, 당신의 방법은 많은 일을하고 있습니다. 메소드가 많은 일을하고 있다면 테스트하기가 매우 어렵 기 때문에 더 작고 간단한 메소드로 분해해야합니다.

일반적으로 하나의 클래스는 한 가지 일에만 책임이 있으며, 그렇지 않은 경우 리팩터링 할 시간입니다.

또한 메소드에 많은 매개 변수가있는 경우 메소드가 잘못된 클래스에 있거나 어쩌면 다른 방식으로 최적화 될 수 있습니다.

if-else 조건이 많은 경우 if-else를 제거하기 위해 상태/전략 패턴을 취해야합니다.

리팩토링을 시작해야하는 경우가 많습니다. 가장 먼저 Martin Fowler의 책 Refactoring을 읽는 것이 가장 좋습니다. 이 책에서 그는 많은 상황들을 다루고 있으며 나는 그것을 매우 추천 할 것이다.

+0

귀하의 통찰력에 감사드립니다. 나는 명확한 질문을하지 않았다고 생각한다. 다시 말해 보겠습니다. 코드 냄새를 발견 한 후 리팩터링 여부를 어떻게 결정합니까? 특정 리펙토링을 어떻게 주장합니까? 즉, 같은 시간에 기능을 구현하거나 다른 코드의 냄새를 맡을 수있었습니다. –

+0

다른 작업과 우선 순위에 따라 달라집니다. 물론, 우선 순위는 버그 수정과 다른 것들을 수정해야합니다. 리팩토링 할 여러 장소 중에서 선택해야하는 경우 해결해야 할 가장 중요한 장소로 이동해야합니다. 또한 새로운 기능을 구현해야하는 경우, 구현하는 것이 얼마나 시급한 지에 따라 다르며 수행 할 작업을 결정해야합니다. 불행히도 귀하의 질문에 대한 정답은 없습니다. 모든 것은 상황, 프로젝트, 조건, 우선 순위 및 귀하의 느낌에 달려 있습니다. –

+0

감사합니다. "... 해결해야 할 가장 중요한 것"은 리팩토링과 관련하여 가장 중요한 것이 무엇인지 어떻게 알 수 있습니까? –