変数をつくろう! | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

はじめまして~
ちかと申します
雑多に書きなぐりますが、よろしくお願い申し上げます。

今日は変数を作るときの悩みを打ち明けます。

悩みの種

私はいつも頭を抱えていました。
チェックボックスを変数に格納するとき、変数名は一体どうやって決めれば良いのでしょうか。

  • chkbox
  • chk_box
  • chkBox
  • ChkBox
  • checkbox
  • check_box
  • checkBox
  • CheckBox

あぁ! なんてくだらない悩み!
私はもっと他のことに悩みたいのに!
(恋とか! 愛とか! 晩御飯のおかずとか!! あ、ついでに仕様をどう実現するかとか。)

ちょっと妄想

じゃぁ仮に、、、
チェックボックスに chkbox と名付けたらどうなるでしょうか。

まずほぼ間違いなく、ボタンには btn と名付けるでしょう。

コンボボックスに cmbbox と名付けて、数秒後に 「う~ん、 combo の方が分かりやすいかなぁ…」 とボヤくのですが、 chkbox との兼ね合いから cmbbox のままにします。

それからスクロールバーをどう略すか1分半ほど悩み、 scrbar にしてみますが、どうもしっくりきません。
そこで、 「Google で "scrbar" を検索して、スクロールバーに関するページが出てきたら scrbar で行こう!」 と思い立ちます。
こうして Google 先生のお墨付きを得て scrbar と名付けるのですが、半年後、「scrbar ってなんだろう...??」 「これってスクロールバーの略語として正しいのかな...??」 と再び Google 先生の元を訪れることになるのです。

その頃には、 cnf が conference (会議) なのか confidential (部外秘) なのか config (設定) なのか分からず、自分の恋人 (lover) と肝臓 (liver) の見分けもつかなくなっています!

そう、

勝手な略語を作っちゃダメ!

母音を抜いて短くする例ばかり挙げましたが、単語の頭文字をつなげてもダメです!
LPCTSTR なんかは略語を作って混乱した最たる例です。

I'm not Hungary, but Hungry.

ハンガリアン記法においては、システムハンガリアンであれアプリケーションハンガリアンであれ、プレフィックスとして勝手な略語を使うことになります。
(システムハンガリアンとアプリケーションハンガリアンについて知りたい方は 『間違ったコードは間違って見えるようにする - The Joel on Software Translation Project』 へどうぞ。)

次の疑似コードでは、 sus が特別な意味を持つプレフィックスとして使われています。
(この例は 『間違ったコードは間違って見えるようにする - The Joel on Software Translation Project』 の例を私に都合良いよう一部改変したものです。)

sName = SFromUs(usName)

こんな略語プレフィックスを10個ほど作れば、プロジェクトメンバーを混乱させるには十分です。
さらに、蹴落としたいライバルを眠らせたければ、略語プレフィックスリストをドキュメント化して渡せば OK です。

上の疑似コードは略さずに書くと次のようになります。

safeName = SafeFromUnsafe(unsafeName)

たしかにソースコードは長くなりました。えぇなりましたとも。
ですが、理解するためのコストはずっと軽くなったのでは!?

キャメる?? パスカる??

略語を削ることで、チェックボックスの名前の候補が半分になりました。

  • checkbox
  • check_box
  • checkBox
  • CheckBox

命名方式の名前はあまり問題ではありませんが、一応、checkbox 以外には呼び方があって、
スネーク形式 (check_box), Camel 形式 (checkBox), Pascal 形式 (CheckBox) と呼ばれるそうです。
※ 広義の Camel 形式は checkBox だけでなく CheckBox も含むので注意が必要です。

で、どれを選ぶかですが、私が言うまでもないというか、私では決められないというか、プログラミング言語ごとやプラットフォームごとの作法がありますので、それに従えばいいでしょう。

もちろん、プロジェクト内の作法があればそちらが優先されるべきですけどね。

最後に

一応断っておきますが、
この記事はちかの独断と偏見にもとづいており、会社全体の方針というわけではございません。あしからず。