きれいなソースを書くために

つうことで、急速に変数の命名なんかに意識が向いてきたところ、キレイなソースを書くために心がけることが大変よくまとまっているサイトがありました。

http://homepage1.nifty.com/~takaot/prprpr/index.html

カッコの位置とか、信教の異なるところはありますがw大筋の流れとしてはほぼ全面的に同意できます。参考にするとよいでしょう。

そんなわけで、ふと思い返したことなんですが、

  関数名:動詞(+目的語)
  変数名:名詞

これで統一できそうですね。値を返さない関数(プロシージャ)ならまんま手続きを動詞化すればいいし、値を返す関数(ファンクション)ならGetHogeHoge()とかにすればいいですね。

なんだけど、ちょっと困っていることがあって、boolean(真偽値*1)を返す関数だったらIsPiyoPiyo()なんですが、booleanを持つ変数名もIsHugaHugaって名前つけてたんですよね。Success/Errorとか、すぐ思いつくようなのならいいのですが、「回転中だよ〜」とかそういうのって何て名前付ければいいんですかね?Rollingとか?微妙…。

だったら、ハンガリー記法にしてbRollingとかにすればOK?いやー、私、システムハンガリアン*2って好きじゃないので、原則つけてないんですよね。。。booleanだけにつけるのはちょっと…。

そもそも、booleanって好きじゃなくて、全部intに格納してるんですよね。。。これを杓子定規にするとiRollingとか?もう駄目すぎるー。…ってなんでboolean嫌いなんだっけ?booleanっつうても、結局4バイトとか使ってたりするから?もしくは

// dataがあるかどうか
int IsAvail()
{
  return Size();
}

こういうint←→booleanつう相互変換をよくかますからキャストするのが面倒で…だったかも。

// ちなみにbooleanだとこうか
bool IsAvail2()
{
  return Size() > 0;
}

…と、話がどんどん発散してしまうくらい、困っているのです。

*1:true/falseの2値をとる変数

*2:今日知った言葉なんですが、メリットの無い型情報をくっつけるのをシステムハンガリアン、文意の助けに変数の要約をくっつけるのをアプリケーションハンガリアンって云うんだそうで。ハンガリアンって割と不評になってきてますが、ハンガリアンにも良いハンガリアンと悪いハンガリアンがあるみたいですw