質問内容
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); }
補足ですが、修正前と同様に修正後も動くことは確認しています。
だったら何が不安なんですか?
no が 4 の時の挙動が違います。質問するよりテストを書きましょう。
また、関数を実行するたびに文字列を生成しているので、効率化できているとも言い切れません。
最も問題なのは、function の名前が連番になっていることです。
元々の例はあくまで例なので連番でも問題なく、実情に合わせて書き換えできますが、あなたのコードでは連番であることが要求されます。
>最も問題なのは、function の名前が連番になっていることです。
>元々の例はあくまで例なので連番でも問題なく、実情に合わせて書き換えできますが、あなたのコードでは連番であることが要求されます。
返信ありがとうございます。
すみません、上記の部分がよく分かっていないのですが、「function の名前が連番になっている」とは具体的にどういうことでしょうか?
連番だと何の関数かわからないじゃないですか。
function1 function2 というのはあくまで例で、ここは本来なら get_user や get_date のようなパスになるんだと思いますが、違いますか?
理解しました。
あくまでサンプルだから連番で書いているだけで、本来は有意な命名をするから個別に指定する方がよい、ということですか。
一見冗長に見える書き方だと思ったのですが、著者の意図はそこにあったのかもしれないですね。
勉強になりました。ありがとうございます。
質問テンプレートと同じようなものだと思います。
「ここに実際に決められたパスを入れてください」「ここに実際に決められた定義名を入れてください」
sampleとかexampleとかhogeとか書いてあるのと変わらないと思って良いかと。
ただ元のコードが本当にその通りだとすると、1,2,3以外はnullが返るので、
その場合どうなるの?というのは気になりますが。