라이브러리에서 함수 감가 상각을 처리하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/152205

  •  02-07-2019
  •  | 
  •  

문제

저는 Java 라이브러리에서 일하고 있으며 일부 기능을 제거하고 싶습니다. 그 이유는 공개 API와 디자인 정리입니다. 일부 객체에는 세터가 있지만 불변이되어야하며 일부 기능은 다른 방법에서 더 나은/클리너로 구현되었습니다.

나는이 방법들을 '더 이상 사용하지 않았다'고 표시했으며 결국 제거하고 싶습니다. 현재 몇 번의 스프린트 (2 주간 개발주기) 후에 이것을 제거 할 생각입니다.

중복 공공 코드 제거에 대한 '모범 사례'가 있습니까?

/jaanussiim

도움이 되었습니까?

해결책

날짜를 설정하고 @DepRecated 태그로 홍보하십시오. 제거에 주어진 시간은 코드가 보유한 사용자의 양, 귀하와 얼마나 잘 연결되어 있는지 및 변경의 이유에 따라 다릅니다.

수천 명의 사용자가 있고 간신히 그들과 대화 할 수 없다면, 시간 프레임은 아마도 수십 년 범위에있을 것입니다 :-)

사용자가 10 명의 동료이고 매일 볼 수 있다면 시간 프레임은 몇 주 범위에있을 수 있습니다.

/**
 * @deprecated
 * This method will be removed after Halloween!
 * @see #newLocationForFunctionality
 */

다른 팁

이런 식으로 고려하면 고객 A는 최신 버전의 라이브러리 파일 또는 프레임 작업을 다운로드합니다. 그는이 기계에서 컴파일을 쳤으며 멤버 파일이나 함수가 더 이상 존재하지 않기 때문에 갑자기 수천 가지 오류가 나타납니다. 이 시점부터 고객에게 새 버전으로 업그레이드하고 이전 버전을 유지 해야하는 이유를 고객에게주었습니다.

Raymond Chen은 Win32 API에 대한 그의 블로그 로이 문제를 최고로 대답합니다.

그러나 소프트웨어 하우스에서의 경험은 API가 작성되면 API를 제품 수명주기의 끝까지 수행해야합니다. 사용자가 새로운 버전을 돕기 위해 새로운 프레임 워크의 기존 명령과 거꾸로 호환됩니다.

코드가 얼마나 자주 재건되는지에 따라 다릅니다. 예를 들어, 라이브러리를 사용하여 4 개의 응용 프로그램이 있고 매일 재건되는 경우, 한 달은 더 이상 사용되지 않은 통화를 수정하기에 충분한 시간입니다.

또한 더 이상 사용되지 않은 태그를 사용하는 경우 상류가없는 통화를 대체하는 코드에 대한 의견을 제공하십시오.

사용 @deprecated 꼬리표. 읽기 API의 감가 상승 자세한 내용은 문서화하십시오.

코드를 사용하는 모든 사람이 자신의 옆에서 정리했다고 말한 후, 더 이상 사용되지 않은 코드를 제거하고 기다렸다가 누군가가 불만을 확인한 다음 자신의 코드를 수정하라고 말하십시오 ...

이것이 라이브러리이라는 점을 감안할 때, 더 이상 사용되지 않은 함수가있는 버전을 보관하는 것을 고려하십시오. 이 버전을 소스 코드와 컴파일 된 양식으로 제공하여 코드를 새 API에 현대화하지 않은 사람들을위한 백업 솔루션으로 제공하십시오. (몇 년 안에 이전 버전을 컴파일하는 데 어려움이있을 수 있기 때문에 이진 형태가 필요합니다.)이 버전은 지원 및 향상되지 않을 것임을 분명히하십시오. 버전 제어 시스템에서 상징적 기호 로이 버전을 태그하십시오. 그런 다음 앞으로 나아갑니다.

API가 사용되는 규모와 고객에게 미리 약속 한 내용에 달려 있습니다.

vinko vrsalovic에 의해 설명 된 바와 같이, 당신은 그들이 기능의 포기를 기대 해야하는 날짜를 입력해야합니다.

제작에서 청정 코드를 "만"하는 문제라면, 나는 아무 것도 깨지지 않는 한 더 이상 사용되지 않는 날짜를 넘어 물건을 제자리에 두는 경향이 있습니다.

다른 한편으로, 나는 개발을 신속하게 분류하기 위해 즉시 그렇게합니다.

다른 프로젝트에서 감가 상징이 어떻게 작동하는지에 대한 예에 관심이있을 수 있습니다. 예를 들어, 다음은 다음과 같습니다 기능 감가 상각을위한 Django 프로젝트의 정책 이다:

사소한 릴리스는 이전 릴리스에서 특정 기능을 사용하지 않을 수 있습니다. 버전 AB의 기능이 더 이상 사용되지 않으면 A.B+1 버전에서 계속 작동합니다. A.B+2 버전에서는이 기능을 사용하면 보류 회원 회의가 발생하지만 계속 작동합니다. 버전 A.B+3은 기능을 완전히 제거합니다.

너무 나쁘다. .net을 사용하지 않는다 :(

내장 쓸모없는 속성은 컴파일러 경고를 생성합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top