2

「値配列」を扱うルーチンの、適切で理解しやすい命名スキームを見つける必要があります(プリミティブ型の最適化を念頭に置いて、Java でC++ に似たものを作成しましたvalarray) 。

私は、ルーチンの主な分類が次の間で行われていることを知っています。

  • 関数 (パラメーターを取り、何かを返す必要があります)
  • メソッド (パラメーターを取り、何も返さない場合があります)

パフォーマンス上の理由から、パラメーターを読み取り専用として脅かす関数/メソッドだけでなく、最初のパラメーターを変更する可能性のある関数/メソッドも定義できます。

これだけでなく... :

ValArrayInt a=..., b=...;
// "apply" treats "a" and "b" as readonly
ValArrayInt temp = ValArrays.apply(adder, a, b); // temp = a + b
a = temp;

...だけでなく、これも:

ValArrayInt a=..., b=...;
// "apply" modifies "a"
a.apply(adder, b); // a += b

これらの種類のルーチンの命名スキームを提案してください:

  • すべてのパラメータを読み取り専用として扱う関数
  • 最初のパラメーターを変更する可能性のある関数
  • すべてのパラメータを読み取り専用として扱うメソッド
  • 最初のパラメーターを変更する可能性のあるメソッド

ModifyingMethod や NonModifyingMethod などのようなものを考えましたが、それらの名前は単純ではなく、長すぎると思います。

4

3 に答える 3

1

結果として 1 つ以上のパラメーターが更新されることを示すために、メソッド名には常に「update」という単語を使用します。例:

updateClaimWithPolicyDetails(Claim c, PolicyCriteria pc, String identifier)

このメソッドClaim オブジェクトを更新する可能性があると合理的に推測できます。次に、ユーザーがさらに知りたい場合は、javadoc を掘り下げることができます。

何かを返し、パラメータを更新する関数には、「updateAndGet」などを使用できます。

public Policy updateClaimAndGetPolicy(Claim c, PolicyCriteria pc, String identifier) 

このことから、Claim を更新してポリシーを返していると推測できます (ポリシーのクレームは既に更新されている可能性があります)。

updateXXX という単語がメソッドで使用されていない場合は、すべてのパラメーターが読み取り専用であると想定する必要があります。更新可能なパラメーターが 2 つある場合は、次のように言えます。

updateClaimAndPolicyCriteria(Claim C, PolicyCriteria pc, String junkParam)

上記は、請求基準とポリシー基準の両方が更新されることを示しています。

于 2010-02-19T14:49:45.420 に答える
0

上記の保留中の更新または変更の回答が気に入っています。ただし、これは実際には、関数の呼び出しが何を行い、パラメーターにどのように影響するかを説明するためのドキュメントの関数であるべきです。ただし、コピーを防ぐためにこれを行いたい場合 (Collections.sort など) があるため、通常は関数に渡されるパラメーターを変更したくありません。また、すべての public getter および setter で愚かな Java Bean クラスを常に使用するのではなく、必要に応じて不変オブジェクトを使用するようにしてください。

于 2010-02-19T14:58:46.777 に答える
0

この情報をメソッド名にエンコードするのは複雑な場合があります。

一方、この情報は、メソッドの副作用を明示的に示すことにより、メソッドのドキュメント (Javadoc など) に存在する必要があります。

于 2010-02-15T21:29:14.713 に答える