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

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

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

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

2回答

969閲覧

Unity3D Switch文を調べたらあまり評価が高くない「何故」?

beryberybery

総合スコア41

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2020/06/24 11:57

素朴な疑問なのですが、

ゲームでAIを作ろうと思い、Switch文を使って、

条件下で行動を振り分けをしたいと思ったのですが、

Switch文でグーグル検索をすると、

Switch文は使うなというサイトがそこそこ出てくるのですが、

「何が問題なのか」

親切な方がいらっしゃいましたら教えていただけたら幸いですm(_ _)m

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

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

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

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

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

guest

回答2

0

Switch文は使うなというサイト

には

「何が問題なのか」

が書かれていないのでしょうか?
とりあえず,

  • 書かれている場合 → それがそのサイトの主張というだけ.
  • 書かれていない場合 → その話は読むに値しない(かも)

という感じ.


それはそれとして,ちょろっとググってみると…

(1)
「breakを付け忘れるとバグるから…」とかいう話を目にしますが,
個人的には,本当に実際にそんなバグを本当に生み出しているならそれは書いている奴が馬●なだけでは? としか思えません.
それを理由として「使うな」と言っているとしたら,それは,

ifに関して,

if( condition ) process1; process2; //これはいつ実行されるのが本当の意図?

みたく書いてしまえるから,「ifは危険!使うな!」

とか言っているのと大差ないレベルの話であり,そんな主張は読むに値しません.

(2)
同じ条件による分岐が複数個所に現れる場合に,それらをswitchで書いていると,保守が大変になる」から,そういう場合には他の手段でやる方が良い場合もある,といったような話は,読むに値すると思います.


「使うな」ではなく,「場面に応じて他の手段と使い分けろ」であるべき.
switchで書けば全てが上手くいく場面であれば,switchを用いるのが良い

投稿2020/06/25 01:52

編集2020/06/25 01:57
fana

総合スコア11996

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

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

0

ベストアンサー

C言語系のswitchには、フォールスルーという直感的でない挙動があります。

C

1switch(value){ 2 case 1: 3 処理1; 4 case 2: 5 処理2; 6}

このように書くと、case 1に入った場合、そのまま下まで通り抜けて処理2;も実行されてしまいます。


ただし、C#を使う場合、フォールスルーするswitchはコンパイルエラーになってくれますので、C#では変なハマり方をするリスクは低いです。

投稿2020/06/24 12:02

maisumakun

総合スコア146018

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

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

beryberybery

2020/06/24 12:09

言語によってハマりやすさ、ハマりにくさがあるのですね、 検索したときに、候補でSwitch文は使うなというのが出てくるので、 使わないほうが良いのかなと思いました、 フォールスルーという概念を初めて知りました。 ご親切にご回答ありがとうございましたm(_ _)m
maisumakun

2020/06/24 12:10

PHPだと、「条件の比較が==というアバウトな比較で行われる」という別な罠もあって、さらに使いにくくなります。
beryberybery

2020/06/24 12:18

ということは、他の言語で実行したときにリスクが付きまとう事でしょうか、 スーパーマリオの「マリオ」みたいにオールマイティな、 どの言語を使ってもリスクが低い文とかあるのでしょうか、、、 それとも一長一短で、この言語はこの文をを使ったほうが良い あっちの言語は違う文を使った方が良いという使い分けが必要なのでしょうか、 素朴な疑問で申し訳ないです。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問