11

ファイル名をパラメーターとして受け取るメソッドがいくつかあります。私の疑問は、これらのメソッドのパラメーターを宣言するより良い方法は何かということです。

  • パラメータは次のタイプである必要がありますString

    void normalizeData(String inFile)
    
  • または、パラメーターを明示的に宣言する必要がありますFile

    void normalizeData(File inFile)
    

個人的にはFileもっと直感的だと思いますが、そのようなことのベストプラクティスは何かを知りたいです.

4

5 に答える 5

22

私はパスしますjava.io.InputStream-これにより、コードのテストが容易になり、ファイルシステムにバインドされなくなります。

このようにして、コードは次のようになります。

public void normalizeData(InputStream in)
{
  ...
}

そしてそれを呼び出す:

myObject.normalizeData(new FileInputStream(myFile));

または

myObject.normalizeData(new FileInputStream("c:/myfile.txt"));

それともテストで

myObject.normalizeData(new ByteArrayInputStream("some test data".getBytes()));
于 2013-06-17T07:38:19.537 に答える
4

複数のオーバーロードされたメソッドを使用して、API のユーザーが選択できるようにすることを検討してください。

InputStreamまた、API のユーザーがメモリ内のデータ表現を使用する可能性があるため、を渡すことも検討してください。

于 2013-06-17T07:38:40.450 に答える
0

ファイルハンドルが normalizeData メソッドの外側にあるのか、それとも内側にあるのかによって異なります。normalizeData メソッドを呼び出す前または後にファイルに対して何かを実行する場合は、normalizeData メソッドの外部でファイル オブジェクトを作成し、メソッドへの参照を渡します。normalizeData メソッドのみがファイル オブジェクトで動作する必要がある場合は、ファイル名を渡すだけです。

ニーズとファイルの処理方法によって異なります。

于 2013-06-17T07:37:21.223 に答える
0

文字列を渡すと、メソッドでファイルを開く方法を制御し、ファイル ハンドルを管理できます。そのコードを一元化しています。オブジェクトを渡すと、Fileこれが呼び出されるすべての場所でファイル処理コードが複製されます。したがって、私は前者を強く好みます。

于 2013-06-17T07:36:25.937 に答える