コードの整理

今日はだらだらとプログラムコードの整理をしてみました。
コーディングをするときは、なるべくコメントを書くように注意しているのですが、やはり後からみるとコメントの過不足が目立ちます。また、コメント付けのスタイルの変化もあるため、今日のように時間があるときに整理しています。コメントを直していると、今度はコードの書き方なども気になってきます。やれインデントが違うとか、やれここはconstにできるだとか。しまいにはスペースの数も気になるありさまです。

今日気になったのは、namespaceを使うかどうか。"unsigned int"だと長すぎるため、"u_int"とtypedefしたのですが、これだと他のヘッダでも宣言されていそうで少し怖くなりました。そこで、namespaceを使って解決しようと思い立ったわけです。STLを使い始めるまでnamespaceの存在を知らなかった口なので、元々namespaceはほとんど使っていませんでした。最近使ったのは、今回と同じように、他でも使われていそうな関数(abs,min,maxなど)をまとめた時だけです。しかし、使わないままではいつまでたってもnamespaceを使えるようになりません。4月から若手のプログラマとして働く身としては、いつまでも旧来の古い慣習に捉われてはいけないのです!!

…というわけで、今日はせっかくなので今使っているクラス群(まだライブラリとは呼べません)全てを同一のnamespace下で管理してみることにしました。と言ってもやることは単純で、クラスの宣言と実装部をnamespaceで囲うだけです。単純作業ですが、ファイルを開いてはコピペ、ファイルを開いてはコピペを繰り返し、1時間もしないうちにクラス群をnamespace tetsuya32の下に置くことができました。

ですがここで問題発生です。ライブラリ的に使用しているクラス群は全てnamespace tetsuya32の中にあるのでそのままでよかったのですが、その外にあるクラスや関数では、クラス群のクラスを使うたびに"tetsuya32::"という接頭子を付けなくてはいけなくなりました。cppなどの実装ファイルないではusing namespaceを使いましたが、ヘッダでは使いたくないので変数の宣言、関数の宣言がひたすら長くなります。これはいかん! …そんなわけで、あえなく方針変更です。まさに、骨折り損のくたびれもうけ。

ところで、namespace tetsuya32内に"typedef unsigned int u_int"と置いたのですが、tetsuya32外で"u_int"が普通に使えてしまいました。これは他のヘッダで既に宣言されていたからなのですが、おかしいのはそこからVC++6の動き。「定義位置を表示」とすると、tetsuya32::u_intの宣言部が表示されるのです。明らかに間違いですよね。まあ、もうそろそろ.netへ移行すべき時期ってことなのかもしれません。VC++6にはずいぶんと長い間お世話になったなぁ。