4

ビジネス ロジックが原因で成功または失敗する可能性があるメソッドに適した戻り値の型はどれですか? その戻り値の型に基づいて、適切な命名規則は何でしょうか?

私の本能は、単純な合格/不合格には bool が最も適しているということです。トレイトを推測するメソッド (IsValid、HasFoo、ContainsBar など) の規則を調査して見つけました。しかし、操作が成功したかどうかを明確に示すための BuildHouse() や FlyKite() などのアクションの適切な命名もそうです。 ?

いくつかの方法を試してみましたが、そのたびに奇妙に見え、より良い練習があるに違いないと考え続けています....

bool IsHouseBuilt()
bool TryBuildHouse()
void BuildHouse(out bool success)
PassFailEnum BuildHouse() //seems a little excessive

bool IsKiteFlying()
bool TryFlyKite()
void FlyKite(out bool success)
PassFailEnum FlyKite() 
4

6 に答える 6

4

何かを別のものに解析しようとしている .NET のすべての組み込みメソッド (例: int.TryParse) が呼び出され、 aとパラメーターがTryParse返されます。boolout

かもね:

public static bool TryBuildHouse(T input, out House house)
于 2013-08-02T20:54:35.477 に答える
1

TryBuildHouse は、あなたの例の中で最も正しいようです。

于 2013-08-02T20:53:34.487 に答える
1

値を返そうとするメソッドでよく受け入れられる形式は次のとおりです。

bool TryBuildHouse(out object thing);

何かを成功させようとするパラメーターのないメソッドの形式としてよく受け入れられるのは、実際にはあなたが望むものです...Try通常、成功しない可能性があることを意味するため、プレフィックスを好む人もいますが、私はそれを考えるのが好きです戻り値の型は、bool成功しない可能性があることも意味します。それぞれ独自に。

何かをビルドする際の失敗が壊滅的なものである場合 (絶対に常に成功する必要があります)、失敗のまれなインスタンスで適切な例外をスローする void メソッドを検討してから、独自のエラーに基づいてそれをキャッチするかキャッチしないかを検討する必要があります。状況および環境要件。

于 2013-08-02T20:54:50.577 に答える
0

たくさんの可能性。言及されていないのは、成功した場合は House オブジェクトを返し、失敗した場合は null を返す BuildHouse() です。

于 2013-08-02T21:04:15.513 に答える
0

次のように、システム内のあらゆる種類の呼び出しに必要な情報を表すクラスを作成することを検討する必要があります。

public class ActionResult
{
    public bool Success { get; set; }
    public List<string> Errors { get; }

    public ActionResult()
    {
        // Initialize whatever you want here
        Errors = new List<string>();
    }
}

次に、メソッドで「悪い」または「予期しない」ことが発生した場合ActionResult、呼び出し元に役立つ可能性のあるエラー情報を戻り値の型に入力できます。

あなたの例では、次のように使用します。

ActionResult BuildHouse()
{

}
于 2013-08-02T20:56:17.860 に答える
0

お勧めしTryParseますが、メソッドが実際にオブジェクトを返すかどうかは述べていません。慣習的にTryParse、出力があることを示唆します。メソッドを見ると、HashSet.Add成功すると bool が返されますが、実際のout値は返されません。

したがって、あなたのケースの音から、私は次のようなものに行きます

/// <summary>
/// Builds a house
/// </summary>
/// <returns>true if house was built; false if house failed to build</returns>
public bool BuildHouse();

成功/失敗のブール値を返すという事実を文書化します。家などのオブジェクトを返すことを計画している場合、このTryParseオプションは意味があり、メソッドにはout新しく作成されたオブジェクトを保持するパラメーターがあります。

于 2013-08-02T20:58:04.367 に答える