0

クラス フィールドとローカル変数の使用に関していくつか質問があります。

  • 変数をフィールドまたはローカル変数として宣言する必要があるのはいつですか? もちろん、変数がブロックまたは関数のスコープ内にのみ存在する場合、変数はローカルにのみ存在する必要があることは明らかです。
  • 関数をリファクタリングした後、大きな関数がいくつかのプライベート関数に分割された場合はどうなりますか? これは、ローカル変数をフィールドにプロモートする十分な理由になるでしょうか? 読みやすさはどうですか?
  • プライベート関数間でローカル変数を渡す方がよいでしょうか?
  • フィールドに昇格する代わりに、同じローカル変数を使用する関数間でクラスを抽出することは実行可能でしょうか?

これに関連するトピックについて説明できるものは何でもいいでしょう。

4

1 に答える 1

2
  1. インスタンスの *状態* を表す変数をフィールドとして宣言します。
  2. 分割された大きな関数は、ローカル変数をフィールドにプロモートする十分な理由にはなりません。可読性と保守性への影響が大きすぎます。
    1. プログラマーは、フィールドが状態の一部なのか、一時的な計算ヘルパーなのかを常に判断する必要があります。
    2. 同じフィールドが同時メソッド呼び出しに使用されるため、スレッドセーフを維持することは非常に困難です
    3. ある内部メソッドから別の内部メソッドに変数を渡すと、次のことが役立ちます。
      1. メソッドの正確な機能を独自に理解する。
      2. 内部メソッドを再利用します。
      3. 内部メソッドの単体テスト。
  3. はい、ローカル変数を渡します。
  4. そのような変数が多すぎる場合は、構造体として機能する便利なヘルパー クラスにそれらをグループ化するのが一般的です。可読性が向上し、使いやすくなります。
于 2013-08-11T15:40:02.160 に答える