0

以下のプログラム設計アプローチに関するヘルプ/ガイダンスをいただければ幸いです。

私は、次のようなクラス、属性を把握したクラスを開発しています。

class PanelBlock{

    public: 
        PanelBlock();

    private:
        TCHAR m_sSlope[PANEL_NAME_LENGTH];  // To store the Slope

        bool m_bTopPanel;     // This is to identify the
        bool m_bMidPanel;     // location of the PanelBlock.
        bool m_bBotPanel;

        // Similarly we have it for other attributes.
        // My Question here is, 
        // Is it better to have a TCHAR instead of 3/5 booleans here?

        TCHAR m_sPanelLocation[PANEL_LOCATION_LENGTH];

}

ここでの私の質問は、

ここで 3/5 ブール値の代わりにTCHAR/Stringを使用する方がよいでしょうか? 私のアプリケーション コードでは、TCHAR/Stringを特定 のTCHAR /String と比較するだけです。たとえば、場所が TOP の場合、タスク A を実行する場合、またはブール値を使用すると、不足している利点がありますか?

また、約 8 つの属性があり、それがTop、middle、または bottomにあるかどうかを識別するためにブール値が必要です。

どんな助け/指導も高く評価されます。

4

3 に答える 3

0

boolは 1 バイト タイプですがTCHAR、用途によっては 2 バイトまで使用できます。メモリ サイズと最適化の観点から、bools は 0 または 1 であるため、より最適化されて高速です。多くの側面が関わっています。

于 2013-11-04T15:46:18.030 に答える
0

設計で考慮すべき唯一の主なポイントではありませんが、一般的には良い格言です。

When doing something, do it once.

アイテムの位置を制御する 3 つのブール値があります。つまり、アイテムの位置を把握するには、3 つのアイテムを確認する必要があります。さらに、アイテムの位置を設定するには、1 つの booleantrueと 2つの boolean を設定する必要がありますfalse。何かをするたびに、3 つのことをやっているようです。

このことを考慮

public enum VerticalPanelPosition {
   TOP,
   MIDDLE,
   BOTTOM;
}

これで、1 つの場所のみを持つことができます

private VerticalPanelPosition vPosition;

そして、「1 つのことを 1 回だけ」実行する必要があります。

public void setPosition(VerticalPanelPosition position) {
  vposition = position;
}

Java 構文については申し訳ありませんが、コンテキストを考えると、それほど労力をかけずに C# に変換できると思います。

頑張ってデザインを上達させてください。これは一度に 1 つの小さなステップであり、考慮すべきことがたくさんあります。

于 2013-11-04T16:08:23.727 に答える