2010-01-19 5 views
0

우리 프로젝트에는이 기존 이미지 뷰어 구성 요소가 잘 작동하지만 원본은 정말 엉망입니다. 이 구성 요소에 새로운 기능을 추가해야만 사람들이 복잡한 작업이 아닌 기존 코드를 다루는 악몽 일 수있는 라이트 펜을 사용하여 이미지에 주석을 추가 할 수 있습니다.기존 구성 요소에 새 기능을 추가하는 방법은 무엇입니까?

나는 지금 어디에서 시작해야할지 모르겠다. 정말로 혼란 스럽다. 기존 코드를 리팩터링해야합니까? 그렇지 않은 경우 어떻게해야합니까?

그래서 여기 내 질문이 있습니다. 그 상황을 다루는 최선의 방법은 무엇입니까?

답변

1

시스템에 대한 변경 사항이 변경되지 않았 음을 확인하고 기존 기능을 손상시킬 수있는 많은 테스트를 작성하십시오.

이러한 테스트는 건설 승무원이 재건축을 수행 할 때 실제 건물을 지원하는 데 사용되는 브레이스 작업과 같습니다. 이 중괄호 작업은 기존 인프라를 손상되지 않게 유지하는 데 사용됩니다. 작성하는 데 걸리는 시간만큼 단위 테스트와 통합 테스트를 통해 시스템 인프라를 보존해야합니다.

이러한 테스트를 통해 시스템에 대한 반복적 인 변경을 수행하고 이러한 변경 사항이 예상 한 동작을 계속 유지하는지 쉽게 확인할 수 있습니다.

+0

비록 우리 구성 요소에 대한 테스트를 작성하는 것이 쉬울 것이라고 생각하지만 리팩터링에 관해서는 특별히 테스트 할 때 단위 테스트를하는 팬입니다. 조언을 구하는 데 감사드립니다 – Beatles1692

1

당신이 아주 좋은 기사 Big Ball of Mud을 읽어야 적용됩니다. 그리고 당신의 대답을 위해 우리 모두는 어떤 시점에서 큰 진흙 구슬을 얻었고 새로운 기능을 추가해야합니다. 그런 코드를 다시 고려하는 것은 많은 테스트가 필요하기 때문에 좋은 생각이 아닙니다. 그러나 새로운 라인을 추가하지 않으면 그 라인을 손상시키지 않습니다. 따라서 시간이 많이 걸리지 않는 한 테스터는 기존 코드에 새로운 기능을 추가하기 만하면됩니다. 현재 코드가 엉망으로 보이지만 작동하고 테스트했음을 기억하십시오. 기사를 읽고 어떤 접근 방식이 좋은지 생각해보십시오.

+0

Vrsalovic은 매우 좋은 게시물을 지적했습니다. 당신도 그걸 읽어야합니다. – affan

+0

어떻게 리팩토링을 하느냐에 달렸습니다. 큰 리펙토링은 확실히 권장할만한 것은 아니지만, 작은 변경을하는 동안 작은 개선을 시도하는 것이 좋습니다. 특히 당신이 머드 볼에 잠시 붙어있을 것이라고 예견한다면. –

+0

네 맞아. 나는 다시 강조하기를 좋아하지만 좋은 것을 대량으로 바꾸는 것은 좋은 생각이 아닙니다. 내 격리 기능을 먼저 되돌릴 수있는 방법으로 리팩토링하고 변경을 수행하고 자주 수행하면 코드 품질을 향상시킬 수 있습니다. 나는 그 사람이 한 번만 바꿔야한다고 생각했다. – affan

관련 문제