月別アーカイブ: 2010年02月

2 posts

リファクタリング

Windows95以前のプログラミング環境(汎用コンピュータもUNIXもMS-DOSも)、CやFortranのプログラムでは、変数名の長さは8文字以内の英数字に制限されていました(後でしらべたらCの変数名の長さ制限は31文字でした。昔のことはどんどん忘れます)。
ルーティンが大きくなったり、グローバル変数が多くなると、変数名の命名規則をしっかりしていないと、変数名が足りなくなります。
そのためどうしても意味の無い規則的な変数名になります。

Visual Studioの開発環境になって変数名の長さに制限がなくなり日本語も使えるようになりましたので、変数名の命名が容易になりましたが、その分変数や関数の命名がぞんざいになりがちです。

まだ冬の並木です
まだ冬の並木です

コーディングについては、Steve McConnellの[コードコンプリート]は示唆に富んだとてもいい教科書です。
だけど、それはそれとして、それも鵜呑みにしないで自分流の命名をしたい([コードコンプリート]は英語でのプログラムを想定しているので、大文字と小文字の使い分けを利用しているが、日本語ではそうはいかないから、[コードコンプリート]を100%踏襲できない理由でもある)。
さりとてもちろん無機的で規則的な名前にしたくない、という気持ちがあります。
しかし結果として未だにいい命名ができなくて、はっきり言って統一性のないコードで、ブログでひと様にお見せできるようなコードではないのですが、恥を忍んで仕組みとしてのコードをこのブログでご紹介しています。

さて、そんな中でとても重宝しているのがVBプロパーのリファクタリングの機能-変数名、関数名等の変更用の[名前の変更]です。
またVBでは[DevExpress]の[Refactor!]が使えます。
[Refactor!]では、メソッドの引数並びの変更や変数宣言の位置の変更ができます。
メソッド名、コントロール名、変数名等をどこか一箇所で変更すると、プロジェクト全体にわたって変更してくれます。
同じく引数並びを変更すると、プロジェクト全体で変更してくれます。
これだけでもコードを見やすくするにはとてもありがたいツールです。

VB6プロジェクトのアップグレード 2

今月は一度もブログを書いていません。

VB6のプロジェクトを書き換えています。
書き換えでは、[LINQ to DataSet]を使う予定でしたが、結局それらしいコードは余りありません。
私は、同じコードをコピーして使うのが極端に嫌いです。
プログラミングの経験者は分かると思います。
通常プログラムは一度で完成することはないですから(余程時間と金に余裕があって、設計を存分に練ることのできるプロジェクトなら別ですが)、
プログラムの中でコピーコードが何箇所にもあるると、修正が入るたびにそれらのコピー部分を毎回修正する必要があります。
コピーコードをあちこち直し歩くことを考えると、一箇所にまとめてそれをブラッシュアップする方が余程いいのです。
そんな訳でできるだけ汎用的なコードを書きたいのです。
LINQは基本的に型づけされているので、汎用的なコードを書こうとするとうまくいきません。
[LINQ to Entity]では解決策を見つけたのですが、[LINQ to DataSet]では分かりません。

というわけで、LINQではなくADO.NETのコードが多くなります。

今取り掛かっているプログラムは多く見ても2万行程度だと思います。大急ぎで一度書き換えたいと思っています。
VB6のプログラムはクラスを使っていませんので、.NETでカプセル化してOOP風のコードにすると結局全面的な書き換えになります。

ビジネスロジックは基本的にはそのままにします。今月一杯には目処をつけたいと思います。