내 견해를 제공하려면 :
코드를 발견 된 것보다 더 나은 상태로 만드는 작은 점진적 변경
확실히 예 : 기능과 직접 관련이없는 "외형"변경 (예 : 변경 요청으로 청구되지 않음).
확실히 아니오 : 큰 청크를 다시 쓰는 것은 "작고, 점진적인"부분을 분명히 위반합니다. 리팩토링은 종종 재 작성 의 반대로 사용됩니다. 다시하는 대신 기존을 개선하세요.
분명한 가능성 : 데이터 구조와 알고리즘을 대체하는 것은 다소 경계적인 경우입니다. IMO에서 결정적인 차이점은 작은 단계입니다. 전달 준비를하고 다른 케이스를 처리 할 준비를합니다.
예 : 벡터 사용으로 인해 속도가 느려지는 Report Randomizer 모듈이 있다고 가정 해보십시오. 벡터 삽입이 병목이라는 것을 프로파일 링했지만, 안타깝게도 모듈은 여러 위치에서 연속 메모리에 의존하므로 목록을 사용할 때 상황이 조용히 중단됩니다.
재 작성은 모듈을 처음부터 더 좋고 빠른 건물로 버리고 이전 건물에서 일부 조각을 선택하는 것을 의미합니다. 또는 새 코어를 작성한 다음 기존 대화 상자에 맞추십시오.
리팩토링은 포인터 산술을 제거하기 위해 작은 조치를 취하여 전환되도록하는 것을 의미합니다. 포인터 산술을 래핑하고 직접 포인터 조작을 해당 함수에 대한 호출로 대체하는 유틸리티 함수를 만든 다음 컴파일러가 포인터 산술이 여전히 사용되는 위치에 대해 불평하도록 반복자 로 전환 한 다음으로 전환 list
한 다음 궁극 기능.
이면에있는 아이디어는 코드 자체가 악화된다는 것입니다. 버그를 수정하고 기능을 추가 할 때 작은 단계로 품질이 저하됩니다. 변수의 의미가 미묘하게 변경되고, 함수가 격리를 깨뜨리는 추가 매개 변수를 가져오고, 루프가 약간 복잡해집니다.이 중 어느 것도 실제 버그가 아닙니다. 루프를 복잡하게 만드는 줄 수를 알려주지 않지만 가독성과 유지 관리에 문제가 있습니다.
마찬가지로 변수 이름을 변경하거나 함수를 추출하는 것은 자체적으로 눈에 띄는 개선이 아닙니다. 그러나 모두 함께, 그들은 느린 침식에 맞서 싸 웁니다.
매일 사람이 땅에 떨어지는 자갈의 벽처럼. 그리고 매일 한 통행인이 그것을 집어 다시 넣습니다.