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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

Q&A

解決済

10回答

7591閲覧

複合代入が嫌いな件????

chu_xxx_lip

総合スコア124

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

2グッド

0クリップ

投稿2015/10/23 10:45

♡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♡

luma, nnahito👍を押しています

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

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

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

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

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

guest

回答10

0

この程度でしたら、速度よりも可読性の問題になると思います。
また、そういう視点ですと代入演算子を使ったほうが読みやすいです。

例えば、変数が長かった場合、、

java

1String theLongGoodbyeByRaymondChandler = "Raymond"; 2 3//読みやすい 4theLongGoodbyeByRaymondChandler += "Chandler"; 5//読みにくい 6theLongGoodbyeByRaymondChandler = theLongGoodbyeByRaymondChandler + "Chandler";

となります。

これが一行ではなく何百行にも渡るとき、
こういう1つ1つの心遣いが可読性を大きく変えます。

という感じです。

投稿2015/10/23 10:57

SKYYFISH

総合スコア654

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

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

golgokoji

2015/10/25 16:26

私も+=派ですが、この回答はカッコいいですね。
chu_xxx_lip

2016/02/12 09:12

確かにかっこいいです٩(๑❛ᴗ❛๑)۶
guest

0

私はむしろ可能な限り複合代入を使いますね.やっていることが同じであることはわかるのですが,
x += nなどは「xをn増やす」という具合に直感的にわかるのですが,
x = x + nは「xをx+nで置き換える」という解釈になり,ちょっと戸惑います.

投稿2015/10/23 13:05

swordone

総合スコア20651

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

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

chu_xxx_lip

2016/02/12 09:17

そちら側の方もいらっしゃるのですね(´・ω・`)!!
guest

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
otn

総合スコア84499

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

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

chu_xxx_lip

2016/02/12 09:18

高度です(´・ω・`)!! 勉強になりました。
guest

0

私はインフラの維持のために、PowerShellを使って手で繰り返し行う処理を自動化するためにスクリプトを書きます。
後の人にも読んでもらいやすくするために、変数名は略称を使わずに命名するので長くなりがちで、スクリプトをパッと見た時に「+=」や「++」を使った方が読みやすいので意図的に多用しています。
メモ帳で開いた時に「ミッチリ」と詰まっていると、どうにも読む気力が失せがちだと感じています。

投稿2015/10/30 12:16

Takeda_Kazuhito

総合スコア369

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

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

chu_xxx_lip

2016/02/12 09:16

勉強になりました、ありがとうございます。
guest

0

Rubyなどでは、Don't repeat yourselfという文化があって、むしろ同じ変数を繰り返し書かない、複合代入の形が好まれています。

ruby

1# こんな複合代入も存在する 2# 「aが未定義、false、nilのどれかなら0を代入する」という意味 3a ||= 0

投稿2015/10/24 00:39

maisumakun

総合スコア145183

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

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

chu_xxx_lip

2016/02/12 09:16

そうなのですね(´・ω・`)!!
guest

0

ベストアンサー

最終的には好みの問題ですし、読みやすさは演算子の使い方だけで決まるものでもないので、一般論で論じている限り答えは出ない(ケースバイケース)ということだと思います。

決してこの手の質問を否定している訳ではないのですが(その証拠に回答する側にちゃっかり加わっています)、職業柄のせいか、どうもこの手の「白黒をハッキリさせたい」的なご質問や問題提起が多いように感じています。

例えば今回のご質問に関して言えば

  • 言語特有の伝統文化
  • コードの文脈
  • 処理の内容やシステムの分野
  • 処理系の実装の違い

・・・などなど、様々な前提条件を踏まえた上で、プログラマーの好みやポリシーや経験や、さらにはプロジェクト規約等によって決まる問題なので、もし意見を募ったりどちらが良いかアドバイスを求めたりするのであれば、それなりに「前提条件」をきっちりと提示された方が実りの多い質疑応答になると思います。

という、チョット堅苦しい前置きをした上で、自分の 好み というか ポリシー をすこしだけ書きます。

一般に、ある変数に何かを加える(add)という意味では、
x = x + y
のスタイルが分かりやすい(見やすい)かなぁ~と考えております。

しかし、たとえば Java ではどうしてもメソッド名などが長くなりがちなので
x += y
みたいな記法の方が可読性が高くなるケースもあります。

それと、特にC系の言語では「タイプ数の少ない」ことを美徳とする風習があるので「省略代入演算子」が多様される傾向が強いですが、例えば
i++
のような記法は、変数 i へ1を加算(add)ではなくて、ループカウンタの増加(increment)なので、躊躇せず意図的に i++ を使っています。

また、組み込み系やデバイスドライバーのようなシビアな分野で無い限りあまり意識しないと思いますが、処理系によっては i++ のように記述する事で レジスタ変数 に割り当てられ処理上のオーバーヘッドが軽減されるケースもあります。

細々書きましたが、要するにケースバイケースと言うことですね。

投稿2015/10/23 12:36

pi-chan

総合スコア5936

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

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

0

ちょっと質問させてください。

何故、複合代入が嫌いなんでしょうか?

もし理解しづらいという理由なら、自分の経験上、復号代入よりもっと別の所が理解しづらいのが原因だったりします。

もっと別の理由があるならおききしたいです。

投稿2015/10/23 17:34

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

chu_xxx_lip

2016/02/12 09:15

プログラミングはおおか、数学に慣れないスパー初心者からみると混乱してしまい難しいです゜・(Pдq。)・゜。
guest

0

私は時と場合によります。

大学の研究でプログラミングをするのですが、自分の実験程度や自分しか見ないプログラムなら
x += n
のような形で書きます。

後輩に譲ったりするプログラムでしたら、
x = x + n
のように書いてます。

どちらが見やすいかと言われると……慣れですかね…?^^;

個人的には
x = x + n
のほうが見栄えは好きです。

投稿2015/10/23 11:00

nnahito

総合スコア2004

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

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

chu_xxx_lip

2016/02/12 09:11

慣れですね٩(๑❛ᴗ❛๑)۶
guest

0

自分は、制御系な奴なので、使い分けています。

x = x + n;
x += n;

すべての環境で、確かめてるわけではありませんが、 たとえば x が volatile とか、 static / automatic かによって、吐かれるオブジェクトコードが変わる可能性があると思うので。

コードの見通しの良し悪しは、どちらかと言うと採用したアルゴリズムの方に依存する事の方が大きい気がします。

投稿2015/11/05 19:04

T.Kanno

総合スコア915

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

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

chu_xxx_lip

2016/02/12 09:15

実に興味深いお話です。
guest

0

文字タイプ数を減らすという意味合いが強いです。
しかし一部の言語は、xに1を足すだけの場合にx++みたいに表記することが出来たりして、
x+=1でもx=x+1でも3つは一緒に見えます。
でも、言語環境によってはコンパイル後のバイナリーコード生成の最適化度合いが変わってくるため、
言語環境によっては成果物がどうなるかを気にしながらコーディングする必要もあります。
例えばC/C++とか。
コンパイラが十分賢くて最適化を更に推し進めていくケースもあるので一概にはいえませんが。

投稿2015/10/23 10:58

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問