質問

Javaライブラリに取り組んでいますが、いくつかの機能を削除したいと思います。この理由は、パブリックAPIとデザインのクリーンアップです。一部のオブジェクトにはセッターがありますが、不変である必要があり、いくつかの機能はさまざまなメソッドでより良く/よりきれいに実装されています。

これらのメソッドを「非推奨」とマークしましたが、最終的に削除したいと思います。現時点では、数回のスプリント(2週間の開発サイクル)後にこれらを削除することを考えています。

冗長なパブリックコードを削除するための「ベストプラクティス」はありますか?

/ JaanusSiim

役に立ちましたか?

解決

日付を設定し、@ deprecatedタグで公開します。削除にかかる時間は、コードに含まれるユーザーの数、ユーザーとのつながりの程度、および変更の理由によって異なります。

数千人のユーザーがいて、ほとんど話をしない場合、時間枠はおそらく数十年の範囲にあるはずです:-)

ユーザーが10人の同僚で、毎日表示される場合、時間枠は簡単に数週間の範囲内になります。

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

他のヒント

このように考えると、顧客Aはライブラリファイルまたはフレームワークの最新バージョンをダウンロードします。彼はこのマシンでコンパイルをヒットし、メンバーファイルまたは関数がもう存在しないため、突然何千ものエラーが表示されます。この時点から、新しいバージョンにアップグレードせず、古いバージョンのままにする理由をお客様に説明しました。

Raymond Chenは、win32 APIに関するブログでこれに最もよく答えています。

しかし、私たちのソフトウェアハウスでの経験は、APIが書かれた後、製品ライフサイクルの最後までAPIを実行する必要がありました。ユーザーが新しいバージョンを使用できるように、新しいフレームワークの古いコマンドとの後方互換性を提供します。

コードが再構築される頻度に依存します。たとえば、ライブラリを使用するアプリケーションが4つあり、それらが毎日再構築される場合、非推奨の呼び出しを修正するには1か月で十分です。

また、非推奨のタグを使用する場合は、非推奨の呼び出しを置き換えるコードについてコメントを入力してください。

@deprecated を使用しますタグ。 APIの廃止ドキュメントを読む詳細については。

コードを使用しているすべての人が自分の側でクリーンアップしたことを伝えた後、廃止されたコードの削除を開始し、誰かが苦情を言うのを待ってから、自分のコードを修正するように指示します...

これがライブラリであることを考えると、非推奨の機能を備えたバージョンをアーカイブすることを検討してください。コードを新しいAPIに近代化していない人のためのバックアップソリューションとして、このバージョンをソースコードとコンパイル済みフォームの両方で利用できるようにします。 (数年後には古いバージョンのコンパイルに問題が発生する可能性があるため、バイナリ形式が必要です。)このバージョンはサポートおよび拡張されないことを明確にしてください。バージョン管理システムでこのバージョンにシンボリックシンボルをタグ付けします。次に前進します。

確かに、APIがどの規模で使用されているか、顧客に前もって約束したものに依存します。

Vinko Vrsalovicが説明したように、関数の放棄を期待する必要がある日付を入力する必要があります。

本番環境で、「ただ」の場合よりクリーンなコードを取得することについては、何も壊さない限り、廃止予定日を過ぎても物事をそのままにしておく傾向があります。

一方、開発では、すぐに整理し、物事をすばやく整理します。

他のプロジェクトで非推奨がどのように機能するかの例に興味があるかもしれません。たとえば、関数の廃止に関するDjangoプロジェクトのポリシーは:

  

マイナーリリースでは、以前のリリースの特定の機能が廃止される可能性があります。バージョンA.Bの機能が廃止された場合、バージョンA.B + 1でも引き続き機能します。バージョンA.B + 2では、この機能を使用するとPendingDeprecationWarningが発生しますが、引き続き機能します。バージョンA.B + 3はこの機能を完全に削除します。

.Netを使用していないのは残念です:(

ビルトイン廃止属性が生成しますコンパイラの警告。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top