2009-08-27 10 views
1

私は、単一のクラスは、その中に次の二つの方法があるJ2MEのコードのビット継承しました: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つを取り除くことはできますか? (あるいは、おそらく両方とも、それについて考える)。

答えて

1

ファイルが存在しない場合、getOutputStreamは例外をスローします。

誰もその動作に頼らない場合に限り、それを取り除くことができます。

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

+0

+1アジャイルメソッドを持つのは良いです –

0

FileConnectorはoptional packageでのみ利用可能ですので、その存在に依存することはできません。

+0

filePathは常に "file://" URLであるはずです。 – izb

関連する問題