1

次のような性別の列挙型があります

enum Gender
{
  female=0,
  male=1,
}

ユーザーは または のいずれ'male'か を入力できます'female'。すべては順調です。しかし、明日、ユーザーが入力するだけの場合、'm'または'f'でなければなりませ'male''female'。(一般に、短い形式の'm'or'f'をサポートする必要があります)

とにかく、列挙型を変更するか、(実行時に列挙型インジェクションのものを)これを達成できますか?

とりあえず使ってるだけ

 string value = GetUserInput();
 if (userEnteredValue == 'm')
 {
     value = "male";
 }
 else if (userEnteredValue == 'f')
 {
     value = "female";
 }
 //else enum.tryparse(stuff)

しかし、これを行うためのより良い方法があるかどうか疑問に思っていますか? すべての if-else 構造の代わりに。

4

3 に答える 3

1

プログラムに何らかの UI がある場合は、本当に必要になるまで、下線付きのデータ構造に触れないことをお勧めします。特に、すでにこれを使用して製品コードを開発している場合。

アプリの機能強化のように、UI レイヤーで "m" と "f" も受け入れることをお勧めしますが、その後は "mail"、"female" に変換します。

このようにして、柔軟性が得られます。ある日、別の変更を加えたい (さらに強化したい) 場合は、「変換レイヤー」を変更するだけで、すべてが以前と同じように機能します。多言語環境についても考えてください。

于 2013-06-27T07:05:53.927 に答える