タグ付けされた質問 「return-type」

9
Javaに `void`メソッドがあるのはなぜですか?
Javaにvoidメソッドが必要なのはなぜですか?参照: voidと宣言されたメソッドは値を返しません。 私の考えている限り、のすべての使用はvoid、ステータスフラグ、呼び出されているオブジェクト、またはを返すことにより、より適切に機能しますnull。 これにより、すべての呼び出しが割り当て可能なステートメントになり、ビルダーパターンとメソッドチェーンが容易になります。通常、効果のためにのみ呼び出されるメソッドは、ブールSuccess型またはジェネリック型を返すか、失敗すると例外をスローします。

6
Cで構造体を返す多くの関数が、実際に構造体へのポインターを返すのはなぜですか?
return関数のステートメントで構造全体を返すのではなく、構造へのポインタを返すことの利点は何ですか? 私はfopen他の低レベル関数のような関数について話しているが、おそらく構造体へのポインタを返す高レベル関数もあるだろう。 これは単なるプログラミングの質問ではなく、設計上の選択であり、2つの方法の長所と短所についてもっと知りたいと思っています。 構造体へのポインターを返すのが利点だと思った理由の1つは、ポインターを返すことで関数が失敗したかどうかをより簡単に判断できることNULLです。 完全な構造を返すのは、NULL私にとっては難しいか、効率が悪いでしょう。これは正当な理由ですか?

9
タスクを実行し、ステータスとしてブール値を返すメソッドの名前を付ける方法は?
方法がある場合 bool DoStuff() { try { // doing stuff... return true; } catch (SomeSpecificException ex) { return false; } } むしろ呼ばれるべきIsStuffDone()ですか? ユーザーは両方の名前を誤って解釈する可能性があります。名前がDoStuff()理由である場合、ブール値を返しますか?名前がIsStuffDone()メソッドの場合、メソッドがタスクを実行するのか、結果のみをチェックするのかは明確ではありません。 この場合の規則はありますか?または、これは欠陥と見なされるため、代替アプローチですか?たとえば、C#などの出力パラメーターを持つ言語では、ブールステータス変数を1つとしてメソッドに渡すことができ、メソッドの戻り値の型はになりますvoid。 編集:私の特定の問題では、メソッドはインターフェイス実装の一部であるため、例外処理を呼び出し元に直接委任することはできません。したがって、呼び出し側は、異なる実装のすべての例外を処理することはできません。これらの例外に精通していません。ただし、呼び出し元はStuffHasNotBeenDoneForSomeReasonException、npintiのanswerおよびcommentで提案されたようなカスタム例外を処理できます。

7
メソッドが不正な入力を返すことができないことがわかっている場合でも、メソッド呼び出しの戻り値を検証する必要がありますか?
呼び出しているメソッドがそのような期待を満たしているとわかっていても、メソッドが呼び出した期待値を満たしていることを検証することで、メソッド呼び出しの戻り値に対して防御する必要があるかどうか疑問に思っています。 与えられた User getUser(Int id) { User temp = new User(id); temp.setName("John"); return temp; } 私はすべき void myMethod() { User user = getUser(1234); System.out.println(user.getName()); } または void myMethod() { User user = getUser(1234); // Validating Preconditions.checkNotNull(user, "User can not be null."); Preconditions.checkNotNull(user.getName(), "User's name can not be null."); System.out.println(user.getName()); } …

9
関数の戻り値の交差タイプをサポートする静的型付け言語はどれですか?
最初のメモ: 私が探していたものを正確に述べるための適切な用語が欠けていたため、この質問は数回の編集の後に閉じられました。その後、Sam Tobin-Hochstadtがコメントを投稿しました。これは、関数の戻り値の交差タイプをサポートするプログラミング言語を正確に認識させるものです。 質問が再び開かれたので、(できれば)より正確な方法で書き直すことで改善することにしました。したがって、以下の回答とコメントは以前の編集を参照しているため、意味をなさない場合があります。(そのような場合は質問の編集履歴をご覧ください。) 関数の戻り値の交差タイプをサポートする、静的で強く型付けされた一般的なプログラミング言語(Haskell、汎用Java、C#、F#など)はありますか?もしそうなら、どれ、そしてどのように? (正直なところ、C#やJavaなどの主流言語で交差タイプを表現する方法を誰かがデモンストレーションするのを見てみたいです。) C#に似た疑似コードを使用して、交差タイプがどのように見えるかの簡単な例を示します。 interface IX { … } interface IY { … } interface IB { … } class A : IX, IY { … } class B : IX, IY, IB { … } T fn() where T : IX, IY { return … ? …

4
C#メソッドでの戻り変数の宣言と直接値を返す
戻り変数に関する議論では、チームの一部のメンバーは、呼び出し元に結果を直接返すメソッドを好む一方、他のメンバーは、呼び出し元に返される戻り変数を宣言することを好みます(以下のコード例を参照) 後者の引数は、コードをデバッグしている開発者が、呼び出し元に戻る前にメソッドの戻り値を見つけることができるため、コードが理解しやすくなることです。これは、メソッド呼び出しがデイジーチェーン接続されている場合に特に当てはまります。 どちらが最も効率的であるか、および/または、あるスタイルを別のスタイルよりも採用する必要があるという理由はありますか? ありがとう private bool Is2(int a) { return a == 2; } private bool Is3(int a) { var result = a == 3; return result; }

4
クラスのメソッドは、それ自体を変更した後、いつ同じインスタンスを返す必要がありますか?
私は3つのメソッドを持つクラスを持っているA()、B()とC()。これらのメソッドは、独自のインスタンスを変更します。 インスタンスが別のコピーである場合(同様に)、メソッドはインスタンスClone()を返すvoid必要がありreturn this;ますが、メソッドで同じインスタンスを変更し、他の値を返さない場合は、同じインスタンス()を返すか、自由に選択できます。 同じ変更されたインスタンスを返すことを決定するとき、のようなきちんとしたメソッドチェーンを実行できますobj.A().B().C();。 これがそうする唯一の理由でしょうか? 自分のインスタンスを変更して返すこともできますか?それとも、コピーのみを返し、元のオブジェクトを以前のままにしておくべきですか?同じ変更されたインスタンスを返す場合、ユーザーは戻り値がコピーであると想定する可能性があるため、それ以外の場合は返されませんか?それが問題なければ、メソッドでそのようなことを明確にする最良の方法は何ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.