0

ユーザーから提供された1つのファイルを読み取り、操作の総数を計算する必要がある1つのアプリケーションを設計しています。これを達成するために私が考えることができる2つの方法があります:

  1. 合計操作を保持する静的変数を作成します。このアプローチの利点は、合計操作に基づいて計算を実行する必要がある場合に、ファイルからすべてのレコードを読み取り、操作の数を計算する関数を何度も呼び出す必要がないことです。

  2. ファイルをループして操作回数を返す関数を作成します。

オプション1はパフォーマンスの面で優れていますが、静的変数はOOPの原則に反しています。この問題に対する他のアプローチがあるかどうか、そして私の理解が正しいかどうかを教えてください。

前もって感謝します。

4

3 に答える 3

0

int型の属性を持つ_operationCountertypeのインスタンスのメソッドでの操作の数を数えることができます。OperationCounterこのインスタンス自体は、任意のクラスの他のインスタンス(場合によっては複数)の属性です。1回だけカウントするようにするには、OperationCounter次の2つの操作を提案します:void makeCount( File in )int getCount()。悪い設計は、に数えることint getCount()です。

于 2012-11-14T19:59:44.913 に答える
0

ユーザー「crnlx」からの提案と2番目のオプションをまとめる必要があるかもしれません。

インスタンス変数を用意し、その値を関数から返される値に設定します。

したがって、メソッドのシグネチャが public void int getNumOfOperations(File fileName);

次のようにします。

int numOfOperations = getNumOfOperations();

このようにして、関数を再度呼び出すことなく、クラスで変数を再利用できます。

于 2012-11-14T20:01:32.440 に答える
0

これは「関数型プログラミング」手法への陰影ですが、署名を使用して関数を作成することをお勧めします。

int numberOfOperations(String line)
List<String> linesForFile(File file)

そして次のようなもの:

int totalOperations = 0;
for(String line : linesForFile(file)){
  totalOperations += numberOfOperations(line);
}
return totalOperations;

そうすれば、テストが簡単な個々の機能があり、「カウント操作」の論理ドメインを特定のソース(ファイル)などと結合していません。

于 2012-11-14T20:09:59.017 に答える