도달 할 수없는 코드 제거
원칙적으로 정적으로 유형이 지정된 언어에서는 코드가 실제로 도달 가능한지 여부를 항상 알아야합니다. 코드를 제거하고 컴파일 할 수 있으며 오류가없는 경우 도달 할 수 없습니다.
불행하게도, 모든 언어가 정적으로 입력되는 것은 아니며 모든 정적으로 유형이 지정된 언어가 원칙적으로 정해지는 것은 아닙니다. 잘못 될 수있는 것은 (1) 반성 및 (2) 원치 않는 과부하입니다.
동적 언어 또는 충분히 강력한 리플렉션이있는 언어를 사용하여 조사중인 코드 조각을 리플렉션을 통해 런타임에 액세스 할 수있는 경우 컴파일러를 사용할 수 없습니다. 이러한 언어에는 Python, Ruby 또는 Java가 포함됩니다.
원칙적으로 과부하가 걸리지 않는 언어를 사용하는 경우 단순히 과부하를 제거하면 과부하 해결이 다른 과부하로 자동 전환 될 수 있습니다. 이러한 언어를 사용하면 코드 사용과 관련된 컴파일 타임 경고 / 오류를 프로그래밍 할 수 있습니다. 그렇지 않으면 컴파일러에 의존 할 수 없습니다. 이러한 언어에는 Java (use @Deprecated
) 또는 C ++ (use [[deprecated]]
또는 = delete
)가 포함됩니다.
따라서 엄격한 언어로 작업하는 것이 운이 좋지 않으면 (Rust 염두에 두어야 함) 컴파일러를 신뢰하여 실제로 발을 쏠 수 있습니다. 불행히도 테스트 스위트는 일반적으로 불완전하므로 더 이상 도움이되지 않습니다.
다음 섹션 큐 ...
잠재적으로 사용되지 않는 코드 제거
더 많은 가능성이 코드가 실제로 참조, 그러나 당신은 의심 실제로 그것을 참조하는 코드의 분기가 취해지지 않습니다 것을.
이 경우 언어에 관계없이 코드에 도달 할 수 있으며 런타임 계측 만 사용할 수 있습니다.
과거에는 이러한 코드를 제거하기 위해 3 단계 접근 방식을 성공적으로 사용했습니다.
- 취하지 않을 것으로 의심되는 각 지점에서 경고를 기록하십시오.
- 한 사이클 후에 특정 코드를 입력 할 때 예외를 던지거나 오류를 반환하십시오.
- 다른주기 후에 코드를 삭제하십시오.
주기는 무엇입니까? 코드 사용주기입니다. 예를 들어, 금융 응용 프로그램의 경우 월간 짧은주기 (월말에 급여가 지급됨)와 긴주기는 예상됩니다. 이 경우 연말 재고가 달리 사용되지 않는 코드 경로를 사용할 수 있다는 경고가 발생하지 않는지 확인하기 위해 최소 1 년을 기다려야합니다.
바라건대, 대부분의 응용 프로그램은 더 짧은주기를 갖습니다.
TODO 의견을 날짜와 함께 다음 단계로 넘어갈 때 조언하는 것이 좋습니다. 그리고 당신의 달력에서 알림.