- 締切済み
どちらが効率的/美しい書き方ですか?
以下のようなコードがあるとします。 if (x > 10) { y = 100; } else { y = 0; } このコードは以下のようにも書けます。 y = 0; if (x > 10) { y = 100; } 上記の2つを処理効率、コードの美しさ(可読性)の観点から見ると、どちらが推奨される書き方でしょうか。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- ahoo_ok
- ベストアンサー率31% (30/95)
どのプログラミング言語か知らないけど個人的には 三項演算子が使えるならどっちにも属さない三項演算子を使って書いちゃいます。 y = x>10 ? 100 : 10;
- foomufoomu
- ベストアンサー率36% (1018/2761)
後者を推薦する意見が多いので(それにも賛成ですが)、前者のメリットも書いておきます。 私は、どちらかというと、前者で書くことが多いです。 後者は長いプログラムの場合、xが10以下の場合の処理がどこにあるのか、すぐに見つけられない場合があります。 プログラムの訂正を繰り返した時、うっかり y=0 を消してしまうことも考えられます。 後者は、「例外的に~~~のときには」の意味が強いとき使うようにしています。
- Tacosan
- ベストアンサー率23% (3656/15482)
個人的には, だけど, そもそも「同一」ではないので「どちらが推奨される」とも考えない. 前者は単純に x>10 なら y を 100 に, そうでなければ y を 0 にする と読むし, 後者だと y の値は原則として 0 だけど x>10 のときは例外的に 100 と読める. 逆に y = 100; if (x <= 10) y = 0; なら y の値は原則として 100 だけど x<=10 なら 0 と考えられる.
- ok-kaneto
- ベストアンサー率39% (1798/4531)
後者かな。 yをこの後使うとして、x>10のとき変化するという条件が無くなった場合。 前者はif文を無くす時にyの初期化も消してしまいそうだけど、後者だとif文だけ消せばよいので。 もう一つ、else文が好きではないというのもあるけど。
- yambejp
- ベストアンサー率51% (3827/7415)
プログラムの原則として変数は初期化しておく必要があるので常識的には後者一拓。 分岐を明確化するためにあえて前者をえらぶとしても、 結局y=0は事前に宣言しておくことが望ましいでしょう。 また、言語によっては三項分岐処理などもあります。
- tsunji
- ベストアンサー率20% (196/958)
変数が1個なら下だけど、複数個あるなら効率から考えて上かな。 ただ、xの判定値がx>10があまり出てこない場合はいいけど、 出てくる確率が多ければまた結果は違うよね。