質問

Java 5にジャンプしたばかりのかなり大量のコードがあります。Java5バージョンでのリリースをターゲットにしたコンポーネントでジェネリックを使用していますが、もちろん残りのコードは生の種類がいっぱいです。生の型に対してエラーを生成するようにコンパイラを設定し、それらを手動でクリアし始めましたが、現在のレートでは、処理に長い時間がかかります( > 2500 エラー)。また、Eclipseの便利なInfer Generic Typeクイックフィックスを使用すると、常にエラーが取り除かれますが、多くの場合、さらに作業が必要なコードが生成されます。

これに対処するより良い方法はありますか? Eclipseよりも優れた自動化ツールはありますか?リファクタリングを1つずつ行うのではなく、すべての発生に適用する方法はありますか?または、警告を無視しますか?

役に立ちましたか?

解決

警告を無視することをお勧めします。そうしないと、機能を改善することなく、レガシーコードの更新に多くの時間を費やすことになります。

更新: Luke からの優れたコメントで、より多くの可視性が得られるはずだと思いました。 "ジェネリックは、コンパイル時に実行時のバグをキャッチする方法です。このレガシーコードにキャストに関連すると思われるバグがない限り、そのままにしておきます(破損していない場合は修正しないでください)"

他のヒント

私が知る限り、あなたはそれを可能な限り効率的に行っています。それは 明らかに完璧ではありませんが、最終的には終了します。

ただし、段階的に行うことをお勧めします。の可能性が高い部分があります 他のコードよりもこのコードの恩恵を受けるコードは、それらに注目してください。しようとしている 1回のスイープですべてを実行すると、コードに新しいバグが導入されるリスクがあります。我々 コンテキスト依存を保持するコレクションがある場所が1つあります データ、ジェネリックは実際には機能しません。

基本的に、あなたがしていることを行いますが、他の作業の一部として段階的に行います。 一度にすべてを修正しようとする代わりに。

同様の課題に直面して、別の理由で編集されたコードでのみJava 5スタイルのジェネリックにアップグレードすることを選択しました。したがって、DoItFast.javaで修正するバグがある場合は、DoItFast.javaを更新してJava 5スタイルのジェネリックを使用してください。定期的に編集および変更されるコードの領域は、すぐに更新されます。この動作の数週間または数か月後、コードベースの状態を再評価できます。

それでも十分な速さで仕事が終わらない場合は、昼食後の遅い時間を使用して、いくつかのクラスを無意識のうちにクリーンアップし、プロセスをスピードアップすることがあります。

古いコードをすべて更新する必要はないと思います。おそらく、古いコードのどの部分が頻繁に使用されているかを何らかの方法で識別し、ジェネリック型を使用するようにそれらを更新することができる場合はどうでしょうか?それとも、生の型がパブリック関数から返されるときにのみ心配することができますか?これらのケースの多くはおそらくプライベート/ローカル変数であり、ジェネリック型なしで既に記述されており、おそらく正常に機能するため、それらを書き換えるのはおそらく価値がありません。

IDEAでは、すべてのクラスを選択し、コンテキストメニューをポップアップして、[リファクタリング]を選択できることを理解しています。ジェネリファイ。仕事完了。ジェネリファイドコード(IMO)を使用する方が確かに楽しい経験になります。

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