2017年10月 / 09月≪ 12345678910111213141516171819202122232425262728293031≫11月

2008.07.17 (Thu)

[コーディングスタイル] 私が定数や判定条件値を比較演算子の左辺(左側)に書く理由

※この記事は、タイトルの方法を「絶対すべき」と強く推奨するものではありません。
※この記事で説明するコーディングスタイルは、一般的なソースコード記述スタイルに反しており、推奨されておらず、そして多くの人の批判を浴びるものです。

結論から言いますと、「判定条件の値が先にわかる」ことです。
実際、条件式は簡潔で見やすいのがよいのですが、必然的に長くなってしまうこともあります。
判定条件が右辺にある場合は、左辺が長い際に、「で、判定条件の値は何なのよ」となるからです。

比較の際に「定数を左辺に書く」という方法は、比較演算子(==)と代入演算子(=)をうっかり間違えた際、
コンパイル時に発見できるようにということで説明されることが多いですが、昨今のコンパイラは、
このような記述は警告を発しますし、左辺が定数ではなく変数であればまったく意味が無いことです。
なのでこのような理由で私がこのコーディングスタイルを採用してるわけではありません。

---他サイト引用--------------
例えば傘をさす、という場合に、「さす、傘を」と考えますか、それとも「傘をさす」と考えますか?何を馬鹿な質問をしているのだ、「傘をさす」に決まっているじゃないか、と言われそうですが、これは重要なことです。普通、ものごとを考える順序としては、何かに対して、何かする、という方向であることが圧倒的に多いわけです。
左に変数を書いて、「もし fp が NULL なら」と考える方が自然です。「もし NULL が fp なら」と考える人は滅多にいないでしょう。
---他サイト引用おわり--------

という説明がありました。日本ではそうかもしれませんが、英語のような動詞が先に来る言語を使う人たちは違うかもしれません。 「どういう条件で、何を評価するのか」という流れのほうが自分にはわかりやすいと感じるのです。
自分は「もし NULL なら。fp が。」と頭の中で考えています。

---他サイト引用--------------
・定数を左辺に書くなんて今時、林晴比古と林晴比古信者しかやらない
・一般的な書き方をお薦めしないとか、一般的でない書き方を広めようとしないでくれよ。
・定数のときだけ左に書くほうが不自然だし定数左派が言うようなメリットなんて勘違いでしかないというのに押しつけがましく奨めてくるから鬱陶しい。
・定数を左が禁止とまでは言わないが右に比べてメリットがあるとはやはり思えないです。
---他サイト引用おわり--------

私は誰かの信者でもありませんし、無理に薦めたりもしません。
不自然に見えるかもしれませんが、自分が感じているメリットは、前述したとおりです。

こういう話は宗教的な論争になってきますので、もしこの件について論議がしたい場合は、仲の良い友人以外にはしないほうが良いでしょう。

ちなみに自分は、上記とは矛盾していますが for 文の条件式においては、一般的な


の順序で書きます。
コーディングスタイルは、「可読性・保守性をあげるためのひとつの手段」にしか過ぎません。
手段と目的を取り違えないように。

●一般的なコーディングスタイル

●判定条件を左辺に記述するスタイル

▼参考サイト
Cプログラミングの秘訣
2ちゃんねる 『不正なbreakです』
初級C言語Q&A(6)
C言語の悪習 (Weblog on mebius.tokaichiba.jp)
コーディングスタイルにこだわるスレ
コーディングスタイルスレ - cppll BBS
関連記事

※コメントを頂けると大変うれしいです。コメントはお気軽にどうぞ^-^

テーマ : プログラミング ジャンル : コンピュータ

22:02  |  ソフトウェア開発/プログラム  |  Trackback(0)  |  Comment(6)  |  EDIT  |  Top↑

*Comment

C++ 独学幾年・・・。 最近多忙を理由に参考書に手もつけていない私が言うのもなんですがw

記述に個性が出るものほど「万人がわかり易い」を目指すのは良い事だと思います。

(このコメント、記事に対して合ってる?ねぇ合ってる?笑)
kilikilik |  2008.07.29(火) 23:09 |  URL |  【コメント編集】

■あってます、たぶんw

分かりやすく見やすく保守しやすくが一番ですね。

おいら、コメントをほとんどソースコードに書かないので、なるべくあとから見てもすぐ分かるように気をつけるようになりました。

コメント書くのめんどくさいし。。。(ぇ
スィン |  2008.07.29(火) 23:40 |  URL |  【コメント編集】

はじめまして、naoといいます。
kilikilikさん経由でこのblogのことを知りました。

判定条件を左側に書くというのは、私も賛成です。正規表現なんかも左側に記述する方が好きです。

あと、コメントをほとんど書かないという点も、同感です。日々、わかりやすいコードを書いていきたいですね。
nao |  2008.10.02(木) 09:51 |  URL |  【コメント編集】

■naoさんへ

どうも、はじめましてスィンです。
ご訪問いただきありがとうございます。

分かりやすいコードになるように、
リファクタリングの研究、工夫をしている日々です。

プログラミングについては時間を見つけてまたいろいろと書いていきたいと思いますのでよろしくお願いします^^
スィン |  2008.10.02(木) 12:42 |  URL |  【コメント編集】

左辺右辺と言うと、Cではあんまし困らないけど、アセンブラのニモニックで代入される側が左辺(つーかオペランド)なCPUと、代入される側が右辺なCPUを交互に使ってるとすごく間違え易い。Z80と680000とか。(´^ω^`)
minami |  2009.03.21(土) 22:58 |  URL |  【コメント編集】

■>miminiさんへ

>mimini君へ

さんづけが気持ち悪いので君で。
昔は若かったので、暇を無見つけたら言語の旅というか、色々な言語に触れたりコード書いたり、アルゴリズム組んだりしてたんだけど、今はさっぽりで、つくられる「もの」をいかに便利にするか意識が集中しちゃって昔の「言語」に対する思い入れが亡くなっちゃったなぁと、minami君のコメントを読んで歳を感じました。(汗

スィン |  2009.03.22(日) 13:30 |  URL |  【コメント編集】

コメントを投稿する

URL
COMMENT
PASS  編集・削除するのに必要
SECRET  管理者だけにコメントを表示
 

*Trackback

この記事のトラックバックURL

この記事へのトラックバック

 | BLOGTOP |