♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡
代入演算子のうちの一つ、
複合代入が嫌いです。
省略代入演算子とも呼ばれますね。
+=
*=
%=
とかですね。
① x = x + 10;
を
② x += 10;
と書くのが嫌いです。
なるべく親切で、綺麗なcodingを心掛けたいんですが、みなさんは①か②どっち派ですか?
効率とか高速化?とかも懸念しないといけないですよね〜〜
よろしくおねがいします٩(๑❛ᴗ❛๑)۶
♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答10件
0
この程度でしたら、速度よりも可読性の問題になると思います。
また、そういう視点ですと代入演算子を使ったほうが読みやすいです。
例えば、変数が長かった場合、、
java
1String theLongGoodbyeByRaymondChandler = "Raymond"; 2 3//読みやすい 4theLongGoodbyeByRaymondChandler += "Chandler"; 5//読みにくい 6theLongGoodbyeByRaymondChandler = theLongGoodbyeByRaymondChandler + "Chandler";
となります。
これが一行ではなく何百行にも渡るとき、
こういう1つ1つの心遣いが可読性を大きく変えます。
という感じです。
投稿2015/10/23 10:57
総合スコア654
0
どの程度あるかは別として、
x[foo(1)] += 2
のようなのは、簡単に書き換えられません。foo()が副作用を持っているかもしれない。Cだとポインタを使えば出来ますが、見苦しくなる。
x[a*a+b*c+3] += 2
も、書き換えるとすると、
x[a*a+b*c+3] = x[a*a+b*c+3] + 2
か、
i = a*a+b*c+3 x[i] = x[i] + 2
ですが、どちらも、いまいちです。
投稿2015/10/23 13:00
編集2015/10/23 13:43総合スコア84499
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
私はインフラの維持のために、PowerShellを使って手で繰り返し行う処理を自動化するためにスクリプトを書きます。
後の人にも読んでもらいやすくするために、変数名は略称を使わずに命名するので長くなりがちで、スクリプトをパッと見た時に「+=」や「++」を使った方が読みやすいので意図的に多用しています。
メモ帳で開いた時に「ミッチリ」と詰まっていると、どうにも読む気力が失せがちだと感じています。
投稿2015/10/30 12:16
総合スコア369
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Rubyなどでは、Don't repeat yourselfという文化があって、むしろ同じ変数を繰り返し書かない、複合代入の形が好まれています。
ruby
1# こんな複合代入も存在する 2# 「aが未定義、false、nilのどれかなら0を代入する」という意味 3a ||= 0
投稿2015/10/24 00:39
総合スコア145183
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
最終的には好みの問題ですし、読みやすさは演算子の使い方だけで決まるものでもないので、一般論で論じている限り答えは出ない(ケースバイケース)ということだと思います。
決してこの手の質問を否定している訳ではないのですが(その証拠に回答する側にちゃっかり加わっています)、職業柄のせいか、どうもこの手の「白黒をハッキリさせたい」的なご質問や問題提起が多いように感じています。
例えば今回のご質問に関して言えば
- 言語特有の伝統文化
- コードの文脈
- 処理の内容やシステムの分野
- 処理系の実装の違い
・・・などなど、様々な前提条件を踏まえた上で、プログラマーの好みやポリシーや経験や、さらにはプロジェクト規約等によって決まる問題なので、もし意見を募ったりどちらが良いかアドバイスを求めたりするのであれば、それなりに「前提条件」をきっちりと提示された方が実りの多い質疑応答になると思います。
という、チョット堅苦しい前置きをした上で、自分の 好み というか ポリシー をすこしだけ書きます。
一般に、ある変数に何かを加える(add)という意味では、
x = x + y
のスタイルが分かりやすい(見やすい)かなぁ~と考えております。
しかし、たとえば Java ではどうしてもメソッド名などが長くなりがちなので
x += y
みたいな記法の方が可読性が高くなるケースもあります。
それと、特にC系の言語では「タイプ数の少ない」ことを美徳とする風習があるので「省略代入演算子」が多様される傾向が強いですが、例えば
i++
のような記法は、変数 i
へ1を加算(add)ではなくて、ループカウンタの増加(increment)なので、躊躇せず意図的に i++
を使っています。
また、組み込み系やデバイスドライバーのようなシビアな分野で無い限りあまり意識しないと思いますが、処理系によっては i++
のように記述する事で レジスタ変数 に割り当てられ処理上のオーバーヘッドが軽減されるケースもあります。
細々書きましたが、要するにケースバイケースと言うことですね。
投稿2015/10/23 12:36
総合スコア5936
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ちょっと質問させてください。
何故、複合代入が嫌いなんでしょうか?
もし理解しづらいという理由なら、自分の経験上、復号代入よりもっと別の所が理解しづらいのが原因だったりします。
もっと別の理由があるならおききしたいです。
投稿2015/10/23 17:34
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
私は時と場合によります。
大学の研究でプログラミングをするのですが、自分の実験程度や自分しか見ないプログラムなら
x += n
のような形で書きます。
後輩に譲ったりするプログラムでしたら、
x = x + n
のように書いてます。
どちらが見やすいかと言われると……慣れですかね…?^^;
個人的には
①x = x + n
のほうが見栄えは好きです。
投稿2015/10/23 11:00
総合スコア2004
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
自分は、制御系な奴なので、使い分けています。
x = x + n;
x += n;
すべての環境で、確かめてるわけではありませんが、 たとえば x が volatile とか、 static / automatic かによって、吐かれるオブジェクトコードが変わる可能性があると思うので。
コードの見通しの良し悪しは、どちらかと言うと採用したアルゴリズムの方に依存する事の方が大きい気がします。
投稿2015/11/05 19:04
総合スコア915
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
文字タイプ数を減らすという意味合いが強いです。
しかし一部の言語は、xに1を足すだけの場合にx++
みたいに表記することが出来たりして、
x+=1
でもx=x+1
でも3つは一緒に見えます。
でも、言語環境によってはコンパイル後のバイナリーコード生成の最適化度合いが変わってくるため、
言語環境によっては成果物がどうなるかを気にしながらコーディングする必要もあります。
例えばC/C++とか。
コンパイラが十分賢くて最適化を更に推し進めていくケースもあるので一概にはいえませんが。
投稿2015/10/23 10:58
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/25 16:26
2016/02/12 09:12