私はこの異なるSomeClass
のリファクタリングを試みていました。上記のメソッドは、このクラスをトリミングするのに適しているようでしたので、IO固有のクラスに入れることを考えました(必要に応じて、簡単にモックを許可する)。いくつかのレガシーコードのリファクタリングに関する問題
class SomeClass{
...
public void m() {
...
emptyDirectory(something);
...
}
private void emptyDirectory(File dir) {
File[] dirContent = dir.listFiles();
if (dirContent != null)
for (File f : dirContent) {
if (f.isDirectory())
emptyDirectory(f);
try {
if (!f.delete()) {
IOError problem = new IOError(symbolTable.getRefinement().getFileName(),
f.toString(), f.isDirectory());
problemManager.add(problem);
}
} catch (SecurityException e) {
IOError problem = new IOError(symbolTable.getRefinement().getFileName(),
f.toString(), f.isDirectory());
problemManager.add(problem);
}
}
}
}
}
問題は、我々のシステムは、単にコンパイラの1(それがエラーを報告しますが、すべてがその作業を継続すべきであると同じように動作エラーロギングメカニズムを持っているということです。あなたがプログラムをコンパイルしようとすると、それはしません最初にエラーが発生したときにコンパイルプロセスを停止します)。
私はIOメソッドから例外をスローし、それをキャッチしてエラー処理の残りの作業をしていたので、このエラー報告のことについてIOクラスに無関心にしたいと思っています。問題は、IOException
とSecurityException
の両方が、ファイルの名前が何であるか教えてくれないことです。
私は自分自身の例外を作成することができますが、私がこのような単純なもののために自分自身の例外を作成し始めると、残りのコードに対して数百もの例外を作成する必要があります。
リファクタリングをできるだけシンプルに保ちたいと思います。
リファクタリングをどのように扱いますか?
_Java_?老いを感じる 。 。 。 –