条件式はどっちが自然? [雑談]
条件式はどっちが自然? [雑談]
最近寒くなってきましたね。
北海道では近くの山で最近雪が降ったようです。
もう朝起きたらとりあえず暖房の前で包まって目ざましテレビを見るのが朝の日課になりつつあります^^;
さて、私も雑談トピを立ててみました。
社会人になってから人のコードを読む機会が非常に増えました。
・・というか毎日のように新しいコードを読むような生活をしています。。。
プログラムは十人いれば、十通りの書き方があるもの。
色んな書き方を見てきました。
今回お聞きしたいのは条件式についてなのですが、
例えば「もしxが0より大きく、3未満なら」という条件式は皆さんどのように書きますか?
①
if( x>0 && x<3 )
②
if( 0<x && x<3 )
③
if( 0<x && 3>x )
④
それ以外
私はずっと①で書いてきましたが、最近数学的な式をそのまま条件式にする機会が多く
数学では「0<x<3」のように範囲を記載する為、②の方が解りやすいのではないかと思ったりしました。
②にし始めた時は何とも違和感があったのですが、今となってはすっかり②で慣れました。
また、「条件式の変数は左に書いてはならない」というコーディング規約を持っている会社を知っているのですが、
③は私にとって何とも違和感があります・・。
if( 1 == x )
のようにコードが全部書いてあるのですが、逆にしたい気持ちになってしまいます・・。
恐らくイコールを一つ付け忘れた時のバグ回避の為だと思いますが、私には何とも・・。
皆さんはどのように書かれますか?
また直接関係ない事でも良いので情報提供いただけると幸いですヽ(´▽`)ノ
北海道では近くの山で最近雪が降ったようです。
もう朝起きたらとりあえず暖房の前で包まって目ざましテレビを見るのが朝の日課になりつつあります^^;
さて、私も雑談トピを立ててみました。
社会人になってから人のコードを読む機会が非常に増えました。
・・というか毎日のように新しいコードを読むような生活をしています。。。
プログラムは十人いれば、十通りの書き方があるもの。
色んな書き方を見てきました。
今回お聞きしたいのは条件式についてなのですが、
例えば「もしxが0より大きく、3未満なら」という条件式は皆さんどのように書きますか?
①
if( x>0 && x<3 )
②
if( 0<x && x<3 )
③
if( 0<x && 3>x )
④
それ以外
私はずっと①で書いてきましたが、最近数学的な式をそのまま条件式にする機会が多く
数学では「0<x<3」のように範囲を記載する為、②の方が解りやすいのではないかと思ったりしました。
②にし始めた時は何とも違和感があったのですが、今となってはすっかり②で慣れました。
また、「条件式の変数は左に書いてはならない」というコーディング規約を持っている会社を知っているのですが、
③は私にとって何とも違和感があります・・。
if( 1 == x )
のようにコードが全部書いてあるのですが、逆にしたい気持ちになってしまいます・・。
恐らくイコールを一つ付け忘れた時のバグ回避の為だと思いますが、私には何とも・・。
皆さんはどのように書かれますか?
また直接関係ない事でも良いので情報提供いただけると幸いですヽ(´▽`)ノ
Re:条件式はどっちが自然? [雑談]
0 < x < 3 を表現するのであれば、よほどの理由がないかぎり2番を使います。
!(0 < x < 3) を表現するのであれば、
if (x <= 0 || 3 <= x)
を使います。
!(0 < x < 3) を表現するのであれば、
if (x <= 0 || 3 <= x)
を使います。
Re:条件式はどっちが自然? [雑談]
> シエルさん
ありがとうございます^^
なるほど、最近の私と一緒ですね。
①だとうっかり不等号を逆に書いてしまう事があるのですが、
②だと逆に書くと明らかにおかしい事が解るんじゃないかと最近思うんですよね。
ありがとうございます^^
なるほど、最近の私と一緒ですね。
①だとうっかり不等号を逆に書いてしまう事があるのですが、
②だと逆に書くと明らかにおかしい事が解るんじゃないかと最近思うんですよね。
Re:条件式はどっちが自然? [雑談]
あ、一応私のmixiボイスで皆さんに頂いたコメントを元に情報を書いておきます。
①に投票した人、 5人
②に投票した人、 2人
③に投票した人、 0人
でした。
> たかぎさん
おぉそうでしたか。ちょっと安心しました^^;
参考書やウェブサイトのサンプルなんかで②はあまり見たことが無いんで
ほとんど使われていないのかと思っていました。
①に投票した人、 5人
②に投票した人、 2人
③に投票した人、 0人
でした。
> たかぎさん
おぉそうでしたか。ちょっと安心しました^^;
参考書やウェブサイトのサンプルなんかで②はあまり見たことが無いんで
ほとんど使われていないのかと思っていました。
Re:条件式はどっちが自然? [雑談]
2番です。数直線上での範囲を記述する一番自然な方法だと思っています。
3番に関しては、条件式が代入式になっていると警告だしてくれるコンパイラさんが
いるんで、そろそろ要らない規則になりつつあるのかな?と思います。
3番に関しては、条件式が代入式になっていると警告だしてくれるコンパイラさんが
いるんで、そろそろ要らない規則になりつつあるのかな?と思います。
Re:条件式はどっちが自然? [雑談]
> ぽこさん
ありがとうございます。
今のところ全員②ですね、意外でした。①が多いかと思っていました。
> 3番に関しては、条件式が代入式になっていると警告だしてくれるコンパイラさんがいるんで、
そうですね、後静的解析ツールなんかでも発見出来ますよね。
ありがとうございます。
今のところ全員②ですね、意外でした。①が多いかと思っていました。
> 3番に関しては、条件式が代入式になっていると警告だしてくれるコンパイラさんがいるんで、
そうですね、後静的解析ツールなんかでも発見出来ますよね。
Re:条件式はどっちが自然? [雑談]
> boxさん
ありがとうございます。
雑談トピでboxさんとお話できたのは久しぶりですね^^
やはり最初は皆さん①なんですね。
私も途中から数直線を意識するようになりました。
ありがとうございます。
雑談トピでboxさんとお話できたのは久しぶりですね^^
やはり最初は皆さん①なんですね。
私も途中から数直線を意識するようになりました。
Re:条件式はどっちが自然? [雑談]
自分は ① で書いています。
しかし、改めて見ると ② が分かり易いですね。
今度から ② で書いていくことにします!
名前を qwea に変更しましたが yu です。
他の方と結構被るので名前を変更しました;
しかし、改めて見ると ② が分かり易いですね。
今度から ② で書いていくことにします!
名前を qwea に変更しましたが yu です。
他の方と結構被るので名前を変更しました;
Re:条件式はどっちが自然? [雑談]
雑談に投稿するのははじめてですね、ACEと申します。
私は①で覚えてからずっとそのままですね。
私の場合、数直線よりも変数から見た変位という考え方をしています。
後、条件式を書きながら条件を考えたりすることが多いので、
とりあえず
私は①で覚えてからずっとそのままですね。
私の場合、数直線よりも変数から見た変位という考え方をしています。
後、条件式を書きながら条件を考えたりすることが多いので、
とりあえず
「x>」まで書いてから考えたりします。
Re:条件式はどっちが自然? [雑談]
自分は基本2番で書きますが、
// 開区間 template<class T> bool in_range_oo(T low, T val, T high) { return low < val && val < high; } // 半開区間 template<class T> bool in_range_co(T low, T val, T high) { return low <= val && val < high; }みたいなのを用意しておいてもいいのかなーと思いました。
Re:条件式はどっちが自然? [雑談]
私も不等号を使う条件式の形は統一するように気をつけています。
私は②の方法をとるようにしています。
私のこだわりとしては、「不等号は常に<だけを使う」ことにしています。
数直線や座標の概念を用いるときは大抵右に行くほど値が大きくなると思うので、
それに慣れているため<だけを用いれば直感的に理解できるかも、という理由からです。
ただそのせいで、>を使うときはすぐにわからずに混乱してします、
特に、STLのソートの規準を与えるプレディケートを作るときなど。
==を使うときは、どちらに変数をおくかは全然気にしていないことが多いです。
今のところ、==をどちらにおくかで何かが変わるような事態にあまり出会った覚えが無いですね。
私は②の方法をとるようにしています。
私のこだわりとしては、「不等号は常に<だけを使う」ことにしています。
数直線や座標の概念を用いるときは大抵右に行くほど値が大きくなると思うので、
それに慣れているため<だけを用いれば直感的に理解できるかも、という理由からです。
ただそのせいで、>を使うときはすぐにわからずに混乱してします、
特に、STLのソートの規準を与えるプレディケートを作るときなど。
==を使うときは、どちらに変数をおくかは全然気にしていないことが多いです。
今のところ、==をどちらにおくかで何かが変わるような事態にあまり出会った覚えが無いですね。
Re:条件式はどっちが自然? [雑談]
No:63171 の例では(2)ですね。
私は条件式は日本語で考えます。
No:63171 の例では、0より大きくて3未満の場合ですから、xが0と3に挟まれているのはとても自然です。
if(x == 1) の場合も、xは1と同じ。 ですからxが左にくるのはとても自然です。
if(1 == x) としてしまうと、1はxと同じ。 と読めてしまって気持ち悪いです。
同じように単に、xは3より大きいという場合は、
if(x > 3) と書きます。
出来る限り左から順番に読みたいのです。
ちなみに、!(0 < x < 3) を表現する場合は、そのまま、if(!(0 < x && x < 3)) と書きます。
私は条件式は日本語で考えます。
No:63171 の例では、0より大きくて3未満の場合ですから、xが0と3に挟まれているのはとても自然です。
if(x == 1) の場合も、xは1と同じ。 ですからxが左にくるのはとても自然です。
if(1 == x) としてしまうと、1はxと同じ。 と読めてしまって気持ち悪いです。
同じように単に、xは3より大きいという場合は、
if(x > 3) と書きます。
出来る限り左から順番に読みたいのです。
ちなみに、!(0 < x < 3) を表現する場合は、そのまま、if(!(0 < x && x < 3)) と書きます。
Re:条件式はどっちが自然? [雑談]
皆様お答えいただきありがとうございます。今までのご回答を集計してみました。
mixi
① 5人
② 2人
③ 0人
掲示板
① 4人
② 10人
③ 1人
全体としては②が多いようですね。
プログラムの書き方として最初に習うのは変数を左に書くという事でしょうから、
それに慣れた方、または代入文も含めて書き方を統一したい方は条件文でもそのまま①使う、
数学的な表記で解りやすさを求めた方は②を使うといった感じでしょうか。
> 一般的な名前さん
③というお答えがあるのは意外でした。もしよろしければその理由を教えて頂けないでしょうか?
> qweaさん
yuさんのポイント引き継いでおきました。
※「①」などの機種依存文字はLinuxでもMacでも正常に表示されるようなので使っていますが、もし不都合があれば教えて下さい。
mixi
① 5人
② 2人
③ 0人
掲示板
① 4人
② 10人
③ 1人
全体としては②が多いようですね。
プログラムの書き方として最初に習うのは変数を左に書くという事でしょうから、
それに慣れた方、または代入文も含めて書き方を統一したい方は条件文でもそのまま①使う、
数学的な表記で解りやすさを求めた方は②を使うといった感じでしょうか。
> 一般的な名前さん
③というお答えがあるのは意外でした。もしよろしければその理由を教えて頂けないでしょうか?
> qweaさん
yuさんのポイント引き継いでおきました。
※「①」などの機種依存文字はLinuxでもMacでも正常に表示されるようなので使っていますが、もし不都合があれば教えて下さい。
Re:条件式はどっちが自然? [雑談]
1番で書いていましたが、2番に変えました。
あと、よくないのかもしれませんが、()で条件をいちいち囲みます。
そっちのほうが私にはわかりやすいので・・・
あと、よくないのかもしれませんが、()で条件をいちいち囲みます。
そっちのほうが私にはわかりやすいので・・・
Re:条件式はどっちが自然? [雑談]
1番です。
主語が先でないと気持ち悪いです。
数学は苦手です。
あとC++で演算子をオーバーライドするときグローバル演算子のオーバーライドを省けます。
それが手抜きと呼ばれず役に立つ環境は限られますけど。
主語が先でないと気持ち悪いです。
数学は苦手です。
あとC++で演算子をオーバーライドするときグローバル演算子のオーバーライドを省けます。
それが手抜きと呼ばれず役に立つ環境は限られますけど。
Re:条件式はどっちが自然? [雑談]
まず真っ先に思い浮かんだものが
&&とかの使わなくても大丈夫な演算子はほとんど使ったことがないので、
上のようなコードを書くのが普通になってしまった・・・ orz
if(x>0){ if(x<3){ }}でした・・・
&&とかの使わなくても大丈夫な演算子はほとんど使ったことがないので、
上のようなコードを書くのが普通になってしまった・・・ orz
Re:条件式はどっちが自然? [雑談]
> おこちゃまさん
ありがとうございます。
括弧で囲むコードは良く見ますよ。
優先順位を明確にしたい時はそうしますね。
> ISLeさん
> 主語が先でないと気持ち悪いです。
ありがとうございます。
確かに「0はxより小さい」のように主語が定数だと変ですね。
> Exさん
なるほど、ただ、3つも4つもある条件式が複数の階層に存在するとあまりにネストが深くなりません?
でも初めての「④」ということで貴重な意見でした。ありがとうございます。
> ひよこさん
お久しぶりです。
両方使うという事もあるんですね。
ありがとうございます。
括弧で囲むコードは良く見ますよ。
優先順位を明確にしたい時はそうしますね。
> ISLeさん
> 主語が先でないと気持ち悪いです。
ありがとうございます。
確かに「0はxより小さい」のように主語が定数だと変ですね。
> Exさん
なるほど、ただ、3つも4つもある条件式が複数の階層に存在するとあまりにネストが深くなりません?
でも初めての「④」ということで貴重な意見でした。ありがとうございます。
> ひよこさん
お久しぶりです。
両方使うという事もあるんですね。
Re:条件式はどっちが自然? [雑談]
私はC言語を始めた時から②番の書き方でしたね。
というより、①と②と両方の書き方をしていた気が・・・w
そのころはただ適当にプログラムを書いてた感じで、特に統一したコーディングはしてませんでした。
最近ではboxさん同様、数直線を意識するとこの書き方のほうが自然な感じがしましたので
②番の書き方に統一しています。
もう1つの理由として、たまに不等号の向きを逆にしてしまうこともあったので、
大小関係を表す際には”<”しか使わない
っていうように自分の中で決めちゃってます。
というより、①と②と両方の書き方をしていた気が・・・w
そのころはただ適当にプログラムを書いてた感じで、特に統一したコーディングはしてませんでした。
最近ではboxさん同様、数直線を意識するとこの書き方のほうが自然な感じがしましたので
②番の書き方に統一しています。
もう1つの理由として、たまに不等号の向きを逆にしてしまうこともあったので、
大小関係を表す際には”<”しか使わない
っていうように自分の中で決めちゃってます。
Re:条件式はどっちが自然? [雑談]
> s-rushさん
どっちがいいのかな~なんて思っているとつい両方書いたりしてしまいますよね^^;
私も変数付ける時m_aviHeaderとかm_AviHeaderとかどっちがいいのかわからずつい統一してなかったりします;
> naohiroさん
なるほど、変数は常に左という統一もありですね。
> パコネコさん
お答えありがとうございます。参考にさせて頂きますね。
どっちがいいのかな~なんて思っているとつい両方書いたりしてしまいますよね^^;
私も変数付ける時m_aviHeaderとかm_AviHeaderとかどっちがいいのかわからずつい統一してなかったりします;
> naohiroさん
なるほど、変数は常に左という統一もありですね。
> パコネコさん
お答えありがとうございます。参考にさせて頂きますね。
Re:条件式はどっちが自然? [雑談]
お久しぶりの書き込みです~。
僕は①ですね
式を書く時、変数を左に統一する癖が付いているようです(笑)
余談ですが、手元にあった参考書も①の形式でした。
僕は①ですね
式を書く時、変数を左に統一する癖が付いているようです(笑)
余談ですが、手元にあった参考書も①の形式でした。