1

1つのクラスに次の2つのメソッドが含まれるJ2MEコードを少し継承しました。

public DataOutputStream getOutputStream(String filePath) throws IOException
{
    return Connector.openDataOutputStream(filePath);
}


public DataOutputStream createOutputStream(String filePath) throws IOException
{
    FileConnection fc = (FileConnection)Connector.open(filePath);

    if(fc.exists())
        return fc.openDataOutputStream();
    else
        fc.create();
    return fc.openDataOutputStream();
}

私の知る限り、これら2つの方法はまったく同じことをします。奇妙なことに、メソッドはクラス内で隣り合っており、そこに置いた人は誰でもメソッドが何をしているのかを知っていることを意味します。

これらの方法は本質的に同じですか?それらの1つを取り除くことはできますか?(またはおそらく両方、それについて考えます)。

4

2 に答える 2

1

getOutputStreamファイルが存在しない場合、例外がスローされるように思われます。

誰もその振る舞いに依存しない場合にのみ、それを取り除くことができます。

そのような状況での通常のリファクタリングでは、ブールパラメータを追加してcreateOutputStream、ファイルがまだ存在しない場合にファイルを作成する必要があるかどうかを通知します。

于 2009-08-28T14:20:57.303 に答える
0

FileConnectorはオプションのパッケージでのみ利用可能であるため、その存在に依存することはできません。

于 2009-08-27T12:11:26.387 に答える