Ok、簡単な質問です。プロパティゲッターで評価するか、インスタンスを作成するときに評価しますか?
まず、私の懸念ははではないと言わざるを得ない。私は、どちらかのオプションや他のパフォーマンスコストが意味をなさないもので、通常のシナリオでは考慮に値するものではないことを完全に認識しています。それは、コーダーの大部分がそれを行う方法に関して、設計基準や好奇心と関係しています。
質問はかなり単純ですので、[OK]を:Magnitude
とArgument
性質があるフィールドをバックアップしている
public struct Complex : IEquatable<Complex>, IFormattable
{
readonly double realPart, imaginaryPart, magnitude, argument;
readonly static Complex j = new Complex(0, 1);
public Complex(double realPart, double imaginaryPart)
{
this.realPart = realPart;
this.imaginaryPart = imaginaryPart;
this.magnitude = Math.Sqrt(Math.Pow(realPart, 2) + Math.Pow(imaginaryPart, 2));
this.argument = Math.Atan2(imaginaryPart, realPart);
}
public double RealPart { get { return this.realPart; } }
public double ImaginaryPart { get { return this.imaginaryPart; } }
public double Magnitude { get { return this.magnitude; } }
public double Argument { get { return this.argument; } }
public static Complex J { get { return Complex.j; } }
...
}
:
は、私は次のように実装することができ複素数struct
を持っていると仮定建設時に評価される。別のオプションは、どちらかのゲッターで対応する値を単純に評価することです。
これを行うための最も推奨される方法は何ですか?標準を持つために任意のオプションを推奨するコーディング標準はありますか?それがない場合は、通常は何が選択されていますか?それとも、私の場合は無関係なパフォーマンスだけに依存していますか?
ええと、コードにはセッターはありません。 – svick
私はあなたに従うことはありません。これは不変型であり、設定子はありません。問題は、コンストラクタ内の対応するフィールドを初期化するオプションを選択し、ゲッターで使用可能にするか、単にバッキングフィールドを持たず、ゲッターで毎回評価することを選択する場合です。 – InBetween
もちろん、 – hofnarwillie