-1

過去数日間、C#のプロパティとメソッドの違い、およびそれぞれを使用する場合について読んでいます。私が読んだ記事/質問のほとんどは、ゲッターは「軽量」であり、内部に大量のロジックや複雑な操作を含めるべきではないと述べています。

今、私はgetプロパティとメソッドの境界線上にあると思うので、メソッドに変更するか、ゲッターにとどまる必要があるかどうか、皆さんがどう思うかを確認したいと思います。

他のアドバイスも大歓迎です:D

public decimal[] getPreprocData
{
    get
    {
        int i = 3;
        decimal[] data = new decimal[9];

        data[0] = (start.Value.Hour * 3600) + (start.Value.Minute * 60);
        data[1] = duration.Value;
        data[2] = flowRate.Value;

        foreach (NumericUpDown nud in gbHTF.Controls.OfType<NumericUpDown>().OrderBy(nud => nud.TabIndex))
        {
            data[i] = nud.Value;
            i++;
        }

        return data;
    }
}
4

3 に答える 3

6

PropertiesFieldは一般的にNounmethodsfunctionsは一般的にVerbです。

だから、でgetPreprocDataある必要がありmethodます。オブジェクト(クラス)のインスタンスに対するアクションを表すためです。


私自身の観点からすると、あなたのプロパティは決してを利用していないので、setter常によりも使用する方が良いmethodですproperty

設定するものがないときにプロパティを持つことのポイントは何ですか。


プロパティは、次のようにメソッドとして実装できます。

public decimal[] GetPreprocData()
{
        int i = 3;
        decimal[] data = new decimal[9];

        data[0] = (start.Value.Hour * 3600) + (start.Value.Minute * 60);
        data[1] = duration.Value;
        data[2] = flowRate.Value;

        foreach (NumericUpDown nud in gbHTF.Controls.OfType<NumericUpDown>().OrderBy(nud => nud.TabIndex))
        {
            data[i] = nud.Value;
            i++;
        }

        return preprocData;
}
于 2013-03-06T18:56:26.493 に答える
1

これは確かに方法であるべきもののように見えます。

少し初期化を行っていて、のサイズにgbHTF.Controls制限がないため、これ高額になる可能性があります。

また、実際に何をしているのかを説明していないプロパティ名の後ろに隠れています。これは、説明的な方法として適しています。

于 2013-03-06T18:56:19.927 に答える
0

それをメソッドに変換します。そこには処理とビジネスロジックがあります。

一般的に、私はプロパティを他のプロパティのフォーマットまたは組み合わせに制限します。これにより、関心の分離が明確になります。

于 2013-03-06T18:56:16.617 に答える