2

別のクラスから複数の Game1 変数を変更する必要があります。私はこのようにしてきました:

    public class Game1 : Microsoft.Xna.Framework.Game
    {
        public int test1;
        public int test2;
    }


    public class Player
    {
        public Player(Game1 game)
        {
            game.test1 = 5;
            game.test2 = 10;
        }
    }

これは悪い習慣ですか?もしそうなら、これを行う別の方法はありますか?

4

4 に答える 4

8

これは悪い習慣ですか?もしそうなら、これを行う別の方法はありますか?

はいといいえ。多くの場合、あるタイプの状態を別のタイプから変更することが適切です。

そうは言っても、これを行うために 2 つの public フィールドを使用することは、私が悪い習慣だと考えていることです。少なくとも、これらをプロパティに切り替える必要があります。"test1" と "test2" が関連する値であり、常に一緒に変更される場合は、これらを設定するために単一のパブリック メソッドを提供することが適切です。

示されているように、パブリック フィールドを使用することの欠点は、値を検証する手段がないことです。誰でも ( を含むPlayer)、フィールドに不適切な値を設定する可能性があります。コードを共有している場合は、バージョン管理の問題もあります (たとえば、プロパティへの変更は API の重大な変更です)。

他のクラスによって変更したい状態 (変数) は、クラスが制御できる方法で常に公開する必要があります。プロパティまたはメソッドを使用すると、これを行うことができます。これが現在必要でなくても、将来に向けて設計することはより良い方法です。

于 2013-04-04T16:21:39.070 に答える
0

要件によっては、これらの変数を静的クラスに静的オブジェクトとして格納する別のオプションがあります。同じプロジェクトの一部である限り、すべてのクラスからアクセスできます。

例えば:

public static class Helper
{
    public static int test1;
    public static int test2;
}

使用法:

public class Player
{
    public Player()
    {
        Helper.test1 = 5;
        Helper.test2 = 10;
    }
}
于 2013-04-04T17:59:03.837 に答える