再注文方法を実装するための最良の方法は何ですか?

与えられた順序に従ってそのプロパティにいくつかの値を割り当てることになっているいくつかのコードがあります。

これがその仕事をするいくつかのサンプルコードです:

public class AnimalCount
{
    public int Dogs;
    public int Cats;
    public int Fish;
    public int Birds;

    public void RankValues(string first, string second, string third, string fourth)
    {
        string property = "";
        int value = -1;
        for (int i = 0; i < 4; i++)
        {
            switch (i)
            {
                case 0: property = first;  value = 10; break;
                case 1: property = second; value = 12; break;
                case 2: property = third;  value = 19; break;
                case 3: property = fourth; value = 20; break;
            }
            switch (property)
            {
                case "dogs":  Dogs  = value; break;
                case "cats":  Cats  = value; break;
                case "fish":  Fish  = value; break;
                case "birds": Birds = value; break;
            }
        }
    }
}

ただし、このコードにはいくつかの問題があります。

  1. 主な問題は、パラメータをどのように渡すかです。この方法では、文字列として渡されるため、型の安全性が失われます。したがって、文字列が重複したり、不一致になったりする可能性があります。列挙型を使用することもできますが、それでも重複のリスクがあり、それを機能させるにはコードの重複を行う必要があります。
  2. スイッチは醜いです。どういうわけかコードの重複のように感じます。

コードに例外処理を入力するよりも良い解決策はありますか?私にはひどく醜いようです。

あなたが知っている必要がある場合、私はダンジョンズアンドドラゴンズで要求された能力スコアの順序を取り、選択した順序でそれらをロールする関数を書こうとしています。

謎めき

私はこれをします:

public class AnimalCount
{
    public int Dogs;
    public int Cats;
    public int Fish;
    public int Birds;

    private Dictionary<string, Action<int>> rankers
        = new Dictionary<string, Action<int>>()
    {
        { "dogs", v => Dogs = v },
        { "cats", v => Cats = v },
        { "fish", v => Fish = v },
        { "birds", v => Birds = v },
    };

    private Action<string, int> setRank = (t, v) =>
    {
        if (rankers.ContainsKey(t))
        {
            rankers[t](v);
        }
    };

    public RankValues(string first, string second, string third, string fourth)
    {
        setRank(first, 10);
        setRank(second, 12);
        setRank(third, 19);
        setRank(fourth, 20);
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

顧客の電話、配送の詳細、注文を実装するための最良の方法は何ですか?

分類Dev

PowerShellスクリプトの翻訳を実装するための最良の方法は何ですか?

分類Dev

PowerShellスクリプトの翻訳を実装するための最良の方法は何ですか?

分類Dev

私のコントロールを実装するための最良の方法は何ですか

分類Dev

Androidで垂直フローテキストを実装するための最良の方法は何ですか?

分類Dev

サイドパネルでUITabbarcontrollerを実装するための最良の方法は何ですか?

分類Dev

JPAで相互に排他的な関係を実装するための最良の方法は何ですか?

分類Dev

「タイマー」を実装するための最良の方法は何ですか?

分類Dev

ウェブサイトに「rememberme」を実装するための最良の方法は何ですか?

分類Dev

mongoDBにFIFOコレクションを実装するための最良の方法は何ですか?

分類Dev

AndroidにFacebookログインを実装するための最良の方法は何ですか?

分類Dev

IDを実装するための良い方法は何ですか?

分類Dev

Scalaで「zipLongest」を実装するための最良の方法

分類Dev

Javaで定数を実装する最良の方法は何ですか?

分類Dev

Goでセマフォを実装する最良の方法は何ですか

分類Dev

SVGでルビを実装する最良の方法は何ですか

分類Dev

非推奨ではないAndroidTabActivityを実装するための最良の方法

分類Dev

Pythonクラスのメソッドを装飾するための最良の方法は何ですか?

分類Dev

App Transport Security を実装する最良の方法は何ですか?

分類Dev

摂氏または華氏への変換の間でユーザー選択を実装するための最良の方法は何でしょうか?

分類Dev

AS3ループを再開するための最良の方法は何ですか?

分類Dev

Pygameウィンドウを再描画するための最良の方法は何ですか?

分類Dev

流星または角度流星でテーマ/テンプレートを実装するための最良の方法は何ですか

分類Dev

Spring Data RESTを使用して深くネストされたJSON構造の更新を実装するための最良の方法は何ですか?

分類Dev

プロパティの変更に関する通知を実装するための最良の方法は何ですか?

分類Dev

複数のタイプのパケットでProtobuf3を実装するための最良の方法は何ですか?

分類Dev

postgresでは、結合テーブルでANDを実行するための最良の方法は何ですか?

分類Dev

ネットワークを介して多くのRaspPis間で完全な通信を実装するための最良の方法は何ですか?

分類Dev

1行のコードの実行時間を取得するための最良の方法は何ですか?

Related 関連記事

  1. 1

    顧客の電話、配送の詳細、注文を実装するための最良の方法は何ですか?

  2. 2

    PowerShellスクリプトの翻訳を実装するための最良の方法は何ですか?

  3. 3

    PowerShellスクリプトの翻訳を実装するための最良の方法は何ですか?

  4. 4

    私のコントロールを実装するための最良の方法は何ですか

  5. 5

    Androidで垂直フローテキストを実装するための最良の方法は何ですか?

  6. 6

    サイドパネルでUITabbarcontrollerを実装するための最良の方法は何ですか?

  7. 7

    JPAで相互に排他的な関係を実装するための最良の方法は何ですか?

  8. 8

    「タイマー」を実装するための最良の方法は何ですか?

  9. 9

    ウェブサイトに「rememberme」を実装するための最良の方法は何ですか?

  10. 10

    mongoDBにFIFOコレクションを実装するための最良の方法は何ですか?

  11. 11

    AndroidにFacebookログインを実装するための最良の方法は何ですか?

  12. 12

    IDを実装するための良い方法は何ですか?

  13. 13

    Scalaで「zipLongest」を実装するための最良の方法

  14. 14

    Javaで定数を実装する最良の方法は何ですか?

  15. 15

    Goでセマフォを実装する最良の方法は何ですか

  16. 16

    SVGでルビを実装する最良の方法は何ですか

  17. 17

    非推奨ではないAndroidTabActivityを実装するための最良の方法

  18. 18

    Pythonクラスのメソッドを装飾するための最良の方法は何ですか?

  19. 19

    App Transport Security を実装する最良の方法は何ですか?

  20. 20

    摂氏または華氏への変換の間でユーザー選択を実装するための最良の方法は何でしょうか?

  21. 21

    AS3ループを再開するための最良の方法は何ですか?

  22. 22

    Pygameウィンドウを再描画するための最良の方法は何ですか?

  23. 23

    流星または角度流星でテーマ/テンプレートを実装するための最良の方法は何ですか

  24. 24

    Spring Data RESTを使用して深くネストされたJSON構造の更新を実装するための最良の方法は何ですか?

  25. 25

    プロパティの変更に関する通知を実装するための最良の方法は何ですか?

  26. 26

    複数のタイプのパケットでProtobuf3を実装するための最良の方法は何ですか?

  27. 27

    postgresでは、結合テーブルでANDを実行するための最良の方法は何ですか?

  28. 28

    ネットワークを介して多くのRaspPis間で完全な通信を実装するための最良の方法は何ですか?

  29. 29

    1行のコードの実行時間を取得するための最良の方法は何ですか?

ホットタグ

アーカイブ