0

ユーザー定義関数を作成しているときに、関数が成功した場合、またはnull以外の値の場合、0を返す必要がありますか?

私は個人的に、関数が成功した場合に0を返すのが好きですが、エラー処理は(!var)常に(var != NULL)。したがって、ブール値以外の状況でも1、として知られているのような値を返す方がよいでしょうか?TRUE

Stack Overflowは何を示唆していますか?

私が尋ねている理由は、私が非ブールラッパーを作成し、ラッパー内にいて、かどうかをチェックする前にWINAPI BOOL CreateProcessWコードを破棄したためです。returning 0TRUE

4

3 に答える 3

1

次のように言うことができるので、成功時にゼロ以外を返す方が簡単だと思います。

int result = foo()
if (!result) { .. }

これは意図がはるかに明確です。NULL は例外的またはエラーの場合に返されることが多いため、成功時に NULL を返すことは直観に反します。

ただし、さらに優れた解決策は、すべてのエラー コードに列挙型を使用し、それらに対してチェックを行い、!result. これにより、複数のエラー コードがある場合にも適切に処理できます。

于 2012-06-18T20:00:30.517 に答える
0

1つだけ選んで、一貫性を保つようにします。重要な方法で他のアプリケーションを使用している場合は、そのコードと一貫性を保つようにしてください。

私は、成功時に 0 を返し、さまざまなエラー条件に対してゼロ以外の数値を使用するのが好きです。エラーとして 0 を使用すると、より複雑なエラー処理を行うことなく、1 種類のエラーのみを返すことができます。しかし、!foo() のチェックは直感に反するように思えるかもしれません。

于 2012-06-18T20:09:11.023 に答える
0

これは非常に主観的な質問ですが、一般的に言えば、列挙型のエラー コードを返し、予期される条件を明示的にチェックすることをお勧めします。そうすることで、自分が陥ったような状況を回避できます。

ただし、一貫性は、1 つのスキームよりも重要です。

于 2012-06-18T20:09:19.587 に答える