Java에서 사용 중단시기 및 삭제시기


11

리팩토링 노력 또는 지속적인 개발의 일환으로 특정 방법이나 전체 클래스가 어떤 의미에서 더 이상 사용되지 않을 수 있습니다. Java는 @Deprecated주석을 지원하여 문제의 기능을 처리하는 더 좋은 방법이 있음을 나타냅니다. API의 일부를 제거하는 효과를 알 수없는 공용 API에서 특히 유용하다고 생각합니다. 비공개 API 및 개정 제어 시스템을 사용하는 프로젝트 (따라서 어떤 의미에서는 삭제를 취소 할 수 있음)의 경우 사용되지 않는 요소를 삭제하는 대신 폐기하는 것이 적절한시기는 언제입니까?

답변:


18

API가 공개 API입니까? 이는 폐기 또는 제거 여부를 나타냅니다. API가 귀하의 이익을 위해 엄격하게 사용되는 경우 (즉, 회사 내에서만 사용되는 경우) 문제가되는 코드를 간단히 제거하는 것이 가장 좋습니다. 훨씬 깨끗하고 장기적으로 유지 보수 두통이 줄어 듭니다.

그러나 API가 공개적으로 직면 한 경우 단순히 메소드를 제거하면 이전 버전의 라이브러리에서 작업하는 데 사용 된 코드의 작동이 중지 될 수 있습니다. 그곳은 일이 더러워지는 곳입니다. 다음은 몇 가지 지침입니다.

  • 내부 API : 더 이상 사용하지 않고 제거합니다. 클라이언트가 내부 클래스 또는 메소드를 사용하는 경우 도구가 중단되면 결함입니다.
  • 외부 API : 먼저 더 이상 사용하지 않고 나중에 제거하십시오. 사용 중단은 나중에 무언가가 제거 될 것이라는 표시입니다. 나중에 당신이 합리적이라고 믿는 것에 달려 있습니다. 더 이상 사용되지 않는 코드를 실제로 제거하기 전에 적어도 2-3 버전을 제공하십시오.

6

클래스 나 메소드를 @deprecate 할 때 미리 알림을 설정하는 것이 좋습니다. 노후화를 촉진하기 위해하고 있습니다. 따라서 모든 참조를 제거하기 위해 여가 시간, 필요에 따라 작업하는 데 걸리는 시간을 추측하십시오. @deprecated로 표시하고 캘린더에 알림을 넣으십시오. 알림을 받으면 확인하십시오. 더 이상 사용되지 않으면 삭제하십시오. 빠르게 업데이트 할 수있는 몇 개의 참조가 남아 있으면이를 수행하고 항목을 삭제하십시오. 더 중요한 작업이 남아있는 경우 미리 알림을 조금씩 내립니다.

충분한 시간을 할애하면 프로젝트에서 클래스 또는 메소드를 제거하는 데 걸리는 시간에 대한 느낌을 갖게됩니다.


1
+1이지만 캘린더가 아닌 팀 기술 부채 상환 캘린더가 더 적합할까요?
게리 로우

5

아무도 사용하지 않고 절대 사용하지 않을 수 있다면 제거하십시오. (반사가 있거나 Velocity 매크로와 같은 외부 구성 요소가있는 경우 까다로울 수 있습니다. IntelliJ와 같은 최신 IDE는 JSP에서는 참조를 찾을 수 있지만 반사를 통해 또는 Velocity에서는 참조를 찾을 수 없습니다.)

더 나은 대안이 있지만 이전 대안이 여전히 많은 곳에서 사용되고 있고 현재 모든 클라이언트 코드를 리팩터링 할 시간이 없다면 쓸모없는 클래스 / 메소드를 @deprecate하는 것이 좋습니다 (에 대한 적절한 주석과 함께) 선호하는 대안).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.