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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

460閲覧

Javaソースコードの効率化をしてみたので、問題点がないか確認をお願いしたいです。

ssmm_147

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2022/10/01 03:26

質問内容

Springbootの書籍に記載されているソースコードが冗長な気がしたので直してみました。
型変換でExceptionが発生しないか気がかりなのですが、問題ないでしょうか?
・Integer型で引数を受け取ることは保障されている?
・Integer→String変換はint→String変換と同様に考えてよいか?
またその他に問題点があればご教授いただきたいです。
初歩的な質問で恐縮ですがよろしくお願いします。
※書籍名は「Spring Framework超入門~やさしくわかるWebアプリ開発」です

修正前のソースコード

/** リンク処理*/ @GetMapping("/function/{no}") public String selectFunction(@PathVariable Integer no) { // 「ビュー名」の初期化 String view = null; switch (no) { case 1: view = "pathvaliable/function1"; break; case 2: view = "pathvaliable/function2"; break; case 3: view = "pathvaliable/function3"; break; } return view; }

修正後のソースコード

/** リンク処理*/ @GetMapping("/function/{no}") public String selectFunction(@PathVariable Integer no) { return "pathvaliable/function" + String.valueOf(no); }

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

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

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

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

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

ssmm_147

2022/10/01 03:35

補足ですが、修正前と同様に修正後も動くことは確認しています。
episteme

2022/10/01 03:40

だったら何が不安なんですか?
Zuishin

2022/10/01 03:41

no が 4 の時の挙動が違います。質問するよりテストを書きましょう。
Zuishin

2022/10/01 03:46

また、関数を実行するたびに文字列を生成しているので、効率化できているとも言い切れません。 最も問題なのは、function の名前が連番になっていることです。 元々の例はあくまで例なので連番でも問題なく、実情に合わせて書き換えできますが、あなたのコードでは連番であることが要求されます。
ssmm_147

2022/10/01 03:58

>最も問題なのは、function の名前が連番になっていることです。 >元々の例はあくまで例なので連番でも問題なく、実情に合わせて書き換えできますが、あなたのコードでは連番であることが要求されます。 返信ありがとうございます。 すみません、上記の部分がよく分かっていないのですが、「function の名前が連番になっている」とは具体的にどういうことでしょうか?
Zuishin

2022/10/01 04:04 編集

連番だと何の関数かわからないじゃないですか。 function1 function2 というのはあくまで例で、ここは本来なら get_user や get_date のようなパスになるんだと思いますが、違いますか?
ssmm_147

2022/10/01 04:19

理解しました。 あくまでサンプルだから連番で書いているだけで、本来は有意な命名をするから個別に指定する方がよい、ということですか。 一見冗長に見える書き方だと思ったのですが、著者の意図はそこにあったのかもしれないですね。 勉強になりました。ありがとうございます。
m.ts10806

2022/10/01 23:02

質問テンプレートと同じようなものだと思います。 「ここに実際に決められたパスを入れてください」「ここに実際に決められた定義名を入れてください」 sampleとかexampleとかhogeとか書いてあるのと変わらないと思って良いかと。
m.ts10806

2022/10/01 23:03

ただ元のコードが本当にその通りだとすると、1,2,3以外はnullが返るので、 その場合どうなるの?というのは気になりますが。
guest

回答1

0

spring という視点ではなくメソッドの役割だけを見れば数値→文字列のマッピングです。
法則性が有るなら、行われたように直接数値を用いることも出来るでしょうし、無ければ、連続性・件数等を鑑みて、オリジナルのように switch で分けたり、配列・list・map を用いたりもあるかも知れません。

万全を期すなら、 Zuishin さんが「質問への追記・修正の依頼」で指摘されているように、 no が 1~3以外の場合の動作もオリジナルと同じ動作にすべきです。
極端には、バグさえも再現する必要がある場合もあります。

投稿2022/10/01 06:21

編集2022/10/01 06:31
jimbe

総合スコア12646

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問