ページ 11

コードの簡略化

Posted: 2014年7月07日(月) 18:57
by KRNKRS
こんにちは、KRNKRSと申します。

さっそくで申し訳ないのですが、C++(DXライブラリ含む)のソースコードを短く描くような構文が知りたいです。
なぜなのかというと、最近、if文を、

コード:

//仮適当コード
if(a == 1){
   x = 0;
}else{
   x = 1;
}
と今まで書いていたのが、

コード:

 x = a==1 ? 0 : 1;
と書けば一行で済むという方法を知ったからです。
それからというもの、このif文と同じように機能は同じ、もしくは似通っているが行数を短く書くことができるまたは処理が速い方法を色々と探してはいるのですが、思うように期待する検索結果は得られませんでしたので、こちらで質問させていただきました。

何かコードやサイト等ご存知でしたらご教授願えないでしょうか。
よろしくお願いいたします。

Re: コードの簡略化

Posted: 2014年7月07日(月) 19:07
by h2so5
行数を短縮すること自体にそれほどメリットはないですが、それでも短縮したいなら「コードゴルフ」か何かで検索すればいいかもしれません。
ゲームプログラミングには全く使えないと思います。

Re: コードの簡略化

Posted: 2014年7月07日(月) 19:13
by hide
ラムダ式とか面白いと思いますね。(私にはあまり出来ませんが)
記号祭りでコードが凄いことになりますよ。

ただ、文法レベルでコードを簡略化することがそれほど良いこととは思いません。
読みづらいのはあとで困りますし、コード全体のアルゴリズムに頭を使ったほうが利口と私は考えます。

Re: コードの簡略化

Posted: 2014年7月07日(月) 19:15
by hide
あ、if文のことでしたね。 ちょっと読み違えました。
でもそれも素直にifでいいと思います。

Re: コードの簡略化

Posted: 2014年7月07日(月) 19:20
by KRNKRS
コードの簡略化よりも可読性を重視した方が良いというのは確かにその通りですね。
しかしコードゴルフなど勉強になりましたありがとうございました。

Re: コードの簡略化

Posted: 2014年7月07日(月) 19:23
by ソーン
コードゴルフのようなアクロバティックな書き方以外では、標準ライブラリ、特にalgorithmを漁ってみてはどうでしょう。
たとえば配列の要素の最小値を求めるには最小値を保持する変数を宣言して、ループで各要素と比べて...とやりますが、それを実装してくれているmin_elementという関数があります。
テンプレートを使っているものがほとんどだと思いますが、スマートに書け、保守性も上がるので知らなければと。

Re: コードの簡略化

Posted: 2014年7月07日(月) 19:23
by softya(ソフト屋)
ちなみに最初のコードですが最適化すれば左程変わらない機械語コードが出力されると思います。確認してみてください。