前提・実現したいこと
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の下に{}を配置し、その中にすべて入れてみたり、と試してみました。
1日休まれたくらいでどうにもならなくなるようなものを作ってるんでしょうか?
その「システム」が業務上のものであれば、結局仕様を握っているのはリーダーでしょうし、世界中からアクセス可能な場所にコードを公開して問題ないのでしょうか。
総当たりコーディングはやめましょう。書いては失敗しを繰り返すのではなく、まずロジックを整理するところから。
> 上記のreturn場所が分からない
????質問自体が謎なのですが、execute()メソッドの冒頭でnewしたRealResponseインスタンスを使うとすると、メソッド末尾の以下のコードとどう折り合いをつけたらよいのか、というような質問でしょうか。
> return new RealResponse<HogeResponseBody>
> {
> Message = userCheck.ToAHR090ResponseBody(request.Message)
> };
※質問者さんらが独自に作っている電文システムとやらの各クラス間のインターフェースに依存するでしょうから、第三者の回答者には正確な回答はできない気がするのですが。
はい、その通りで、どう折り合いをつければ良いのかが分かりません…
> m.ts10806様
業務ロジックなどと書いてはいますが、こちらはあくまでも社員同士で試しに作っているようなものなので業務に直接影響するものではありません、心配していただきありがとうございます。
折り合いもなにも、new するのをやめればいいだけのように思います。むしろなぜ最後に new しているのか意味不明なので、適当にキーボードを叩くのではなく考えてから書きましょう。
RealResponseやHogeResponseBodyは質問者さんが取り組んでいるプロジェクトの独自クラスと推察します。そうであればそのクラスのインスタンスの適切な使い方、return先の呼び出し側が求めるインスタンスの完成形は第三者には正確には分かりません。この質問は言うなればあなたの家に他の者が知らない独自ルールがあり、ある局面で「どう守ったらよいの?」と唐突に赤の他人に聞いているようなことなのですが、その違和感が伝わりますでしょうか。具体的なコードでの回答は、「こんなのでいいんじゃない?(知らんけど)」くらいしか提示できないと思います。そんな回答にある修正方法ではあとでお母さんに怒られるかもしれません。結局はZuishinさんのご指摘のように、そのシステムを知っている質問者さんが「適当にキーボードを叩くのではなく考えてから書く」しかないはずです。
>dodox86様
とても図々しいことをお聞きしたこと、理解しました…。
大変失礼しました、ありがとうございます。
>Zuishin様
これ別の方から引き継いだものなので最後のreturnは必須だと思ってましたが、たしかに変なことしてました、ご指摘ありがとうございます。
コードから考えるのではなく仕様書から考えては。
設計書すらないのでしたらちょっと。
引き継いだ時にはコードを読んで何をしているか処理を追ってから改修するのをおすすめします。userCheck も上書きしていますが、これもしていいことのようには思えません。
というか
>社員同士で試しに作っているようなものなので業務に直接影響するものではありません
なおさら、上司待てば良いのでは。
引き継いだもの…等々、他人には目的やスケジュール感が不明です。
「悩んでる時間を初心者脱却に充てよう」くらいのアドバイスならできますが。
あなたの回答
tips
プレビュー