スコープ

変数に限らず、スコープは最小限に留めていただきたい。

上のループカウンタの話に繋がるのだが、

なんで、ループの中のループで使っているカウンタ変数jをメソッドの先頭で宣言して、気持ち悪くないんだろうか。

実装のフェーズの事しか考えていない人は、こういうコードをガンガン生産する。

もっとも長いフェーズは保守ですよ。保守。

せめて、明日の他人が、2年後の自分が、読めるコードを書くように心がけて欲しい。

私も忘れないように努力したい。

#自分のブログ見ていたら、過去のエントリでもスコープについて触れていた・・・

#まだ多いのかな、最小のスコープを心がけるよりも、メソッドの先頭で宣言した方が良いと思っている人。

Share

変数の宣言は最小スコープで。

変数を宣言する時は、そのスコープが最小になるようにしましょう。

メソッドの先頭でまとめて宣言とか、しなくて良いです。

つか、しない方が良いです。

本当は、そのメソッドの一部にしか使っていないのに、先頭で宣言なんかしちゃったら、そのメソッド全体がスコープになってしまって、その変数の使われている可能性が、メソッド全体になってしまいます。

使う直前で宣言してあげれば、その可能性は使っているところだけに限定される。

場合によっては、別メソッドとして切り出せる可能性を早い段階で知る事ができるし、切り出しやすいという副作用もあります。

Share

日本語でコーディング

最近、開き直ったように日本語でコーディングしている。

クラス名、メソッド名等も含めてである。

以前、実験的に行った際にIMEを立ち上げることによる、オーバヘッドが思ったよりも少なかった事。

実際に、運営されているプロジェクトでとりあえずエンティティを日本語してみて、得られた感触から、ほとんどを日本語でコーディングしても良いと感じたのだ。

もちろん、適材適所であり、日本語圏ではない人と仕事をする時にまで適用するものではない。

課題があるとすれば、いままで、そんなコーディングをしてこなかった人にとっては拒否反応を示す類いのものだろう。

実際、とある掲示板で「日本語でのコーディングなんて嫌です。」という意見もあった。

そこをどう説得するか。

まぁ、メリットとデメリットを並べて、ストレートに説明することしかできないのですが。

#そんな時、相手の偏見や経験則が理解を邪魔するので、厄介だなぁと思います。

そんなわけで、日本語コーディングをもっと推進していっても良いかなと思った。

#さすがに、クラスライブラリは日本語ではありませんが。

Share

自分が何をコーディングしているのか理解しないまま仕事しちゃ駄目

下記のコードをネット上で見て、うすら寒い思いをした。

(原文ママではありません)

Dim dv As New DataView

Dim dt as New DataTable

dt = CreateData() ‘DataTableを返すメソッド

dv = dt.DefaultView

この場合、dtはCreateData()から返されたDataTableのインスタンスを取得するのに、

宣言時にもインスタンスを生成している。

dvはdt.DefaultViewから返されるDataViewのインスタンスを取得するのに、

これまた宣言時にもインスタンスを生成している。

この事から、このコーダはクラスとインスタンスの関係を理解していない。

理解していないまま、なんとなく動いちゃうから、それでいいやになっている。

仕事でやっているのなら、せめて、自分が書いたコードがどう動いているのか理解しましょう。

ちなみに、プログラムは自分が思った通りに動くと思ったら大間違いです。

プログラムはコーディングした通りにしか動きません。

Share

最近、クラス名に日本語を用いている

働きかけの結果、前回のシステム開発からシステム内で利用する用語に関連するテーブル名およびクラス名に日本語を採用する事になった。

用語を日本語と英語で用意しなくてもよいし、コメントレスコーディングを推奨している側面から見ても、メリットが向上したなぁと感じた。

IMEを操作する手間もインテリセンスがサポートしてくれるので、たいした事が無いとわかった。

でも、やはり最大のメリットは最初に述べたシステム開発で利用する業務の用語を日本語のまま適用できる事だと実感している。

とりあえず、想定したとおりのメリットが出ている。

Share

コメントレスコーディングのススメ

コメントを書かないでコーディングしましょう。

コメントを書かないでコーディングしましょうと言うことは、プログラムの解読をコメントに頼らない。読みやすさをコメントに頼らない。という事で、読みやすいコーディングを心がけましょうと言うことです。

個人的な経験上から言うと、コメントが多いプログラム程、読みにくい構成になっています。

変数名、関数名、クラス名がむやみに短縮されていたりして、何も連想できなかったりします。

あと、保守されていないコメントは、ミスリードを誘います。叙述トリックです。(違う)

というわけで、コメントレスコーディングを奨めるわけです。

もれなく、以下の特典が付いてきます。

自分に・・・

・構成力がつく。

・文章力がつく。

・その他(考えてください)

プログラムが・・・

・読みやすくなる。

・保守性が高くなる。

・その他(考えてください)

です。

ちなみに、コメントレスコーディングをするに当たって気をつけなくてはいけないのは以下の点。

・変数名、関数名、クラス名を省略しない。

・それぞれが持っている役割を書く。

・名前は長くなっても良い。

・名前が長すぎると思ったら、役割を持ちすぎているので分解する。

・マジックナンバーを使わない。

・文章を書くようにプログラムする。

これらが守られなかった場合、悪夢をみます。

って、別にコメントレスじゃなくても、当然気をつけるべき点ですね。

まぁ、モノは試し、とりあえず、コメントレスでコーディングしてみて、読みにくいと思ったら、要所要所コメントを付ければいいのではないでしょうか。

と、ちょっと端折り気味。

Share