質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

0回答

840閲覧

[C#] returnする場所が分からない

new5450

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/01/19 02:35

編集2021/01/19 02:52

前提・実現したいこと

C#で電文を出力するシステムを作っています。
初心者なりに書いては失敗してを繰り返し、上司に質問したりもしているのですが、今日に限ってその上司が休みで八方塞がりなので助けてください。

発生している問題

var response = new RealResponse<HogeResponseBody>(); 上記のreturn場所が分からない

該当のソースコード

C#

1 /// <summary> 2 /// 実行処理 3 /// </summary> 4 /// <param name="request">リクエストデータ</param> 5 /// <returns>RESTリクエスト</returns> 6 [AutoTransaction] 7 public RealResponse<HogeResponseBody> Execute(RealRequest<HogeRequestBody> request) 8 { 9 var response = new RealResponse<HogeResponseBody>(); 10 11 // ヘッダー情報よりコード設定 12 request.Message.Huga = request.Huga; 13 14 // ユーザチェック 15 if (_userCheckService.Validate(request.Message, out var userCheck)) 16 { 17 // 更新処理 18 // 区分 = "0" の場合のみ 19 userCheck = _entryFacade.EntryRequest(request.Message, userCheck); 20 } 21 else 22 { 23 // 業務ロジックでエラーのケース 24 response.WithAppError(); 25 } 26 27 // 履歴出力 28 userCheck = _entryService.CreateTable(request.Message, userCheck); 29 30 return new RealResponse<HogeResponseBody> 31 { 32 Message = userCheck.ToHogeResponseBody(request.Message) 33 }; 34 }

試したこと

もちろんelse{}の下に書くと履歴出力の処理には到達できないので、最後のnewをreturn responseに変更してみたり、最初のnewの下に{}を配置し、その中にすべて入れてみたり、と試してみました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/01/19 02:42

1日休まれたくらいでどうにもならなくなるようなものを作ってるんでしょうか? その「システム」が業務上のものであれば、結局仕様を握っているのはリーダーでしょうし、世界中からアクセス可能な場所にコードを公開して問題ないのでしょうか。
Zuishin

2021/01/19 02:43

総当たりコーディングはやめましょう。書いては失敗しを繰り返すのではなく、まずロジックを整理するところから。
dodox86

2021/01/19 02:48

> 上記のreturn場所が分からない ????質問自体が謎なのですが、execute()メソッドの冒頭でnewしたRealResponseインスタンスを使うとすると、メソッド末尾の以下のコードとどう折り合いをつけたらよいのか、というような質問でしょうか。 > return new RealResponse<HogeResponseBody> > { > Message = userCheck.ToAHR090ResponseBody(request.Message) > }; ※質問者さんらが独自に作っている電文システムとやらの各クラス間のインターフェースに依存するでしょうから、第三者の回答者には正確な回答はできない気がするのですが。
new5450

2021/01/19 02:53

はい、その通りで、どう折り合いをつければ良いのかが分かりません…
new5450

2021/01/19 02:59

> m.ts10806様 業務ロジックなどと書いてはいますが、こちらはあくまでも社員同士で試しに作っているようなものなので業務に直接影響するものではありません、心配していただきありがとうございます。
Zuishin

2021/01/19 03:04

折り合いもなにも、new するのをやめればいいだけのように思います。むしろなぜ最後に new しているのか意味不明なので、適当にキーボードを叩くのではなく考えてから書きましょう。
dodox86

2021/01/19 03:36

RealResponseやHogeResponseBodyは質問者さんが取り組んでいるプロジェクトの独自クラスと推察します。そうであればそのクラスのインスタンスの適切な使い方、return先の呼び出し側が求めるインスタンスの完成形は第三者には正確には分かりません。この質問は言うなればあなたの家に他の者が知らない独自ルールがあり、ある局面で「どう守ったらよいの?」と唐突に赤の他人に聞いているようなことなのですが、その違和感が伝わりますでしょうか。具体的なコードでの回答は、「こんなのでいいんじゃない?(知らんけど)」くらいしか提示できないと思います。そんな回答にある修正方法ではあとでお母さんに怒られるかもしれません。結局はZuishinさんのご指摘のように、そのシステムを知っている質問者さんが「適当にキーボードを叩くのではなく考えてから書く」しかないはずです。
new5450

2021/01/19 04:14

>dodox86様 とても図々しいことをお聞きしたこと、理解しました…。 大変失礼しました、ありがとうございます。
new5450

2021/01/19 04:18

>Zuishin様 これ別の方から引き継いだものなので最後のreturnは必須だと思ってましたが、たしかに変なことしてました、ご指摘ありがとうございます。
m.ts10806

2021/01/19 04:21

コードから考えるのではなく仕様書から考えては。 設計書すらないのでしたらちょっと。
Zuishin

2021/01/19 04:26

引き継いだ時にはコードを読んで何をしているか処理を追ってから改修するのをおすすめします。userCheck も上書きしていますが、これもしていいことのようには思えません。
m.ts10806

2021/01/19 05:10

というか >社員同士で試しに作っているようなものなので業務に直接影響するものではありません なおさら、上司待てば良いのでは。 引き継いだもの…等々、他人には目的やスケジュール感が不明です。 「悩んでる時間を初心者脱却に充てよう」くらいのアドバイスならできますが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問