VB6:「規約:可読性の問題 宣言部のあり方」
VBで現役PGをしていた頃の話ですが、嫌いなコーディングを見かけることがありました。
その代表例が、
dim a
dim b,c as String
b=c
a=b
d=b
If d = b then
dim z
z = b
End If
変なサンプルになってしまいましたが、かなりイラッとキマせんか?
1)まず、a 及び b の型がStringであることはわかりきっているのに
型宣言しません。つまりVariant です。
内部型の変換で暗黙変換を悪用した感じ。
書ける=書いて良い ではないのが、複数人での開発だと思う。
また、この問題には別のルールで
dim 変数1、変数2、変数3 as 型
とかくと、あたかもその行の変数すべてが最後の型のように読めてしまう錯覚を
初心者が覚えているのが問題。(実験する時間がないのだろうか・・。)
他の言語(Cなど)のときどういう動きをしたかを忘れている自分が言える話では
ないのだけれど、使うときには言語別に注意や確認のうえで作業すべきだと思う。
2)突如出現するd 変数。
まぁ、この辺はだいぶ改善されましたが。
3)突如宣言される変数 Z 。
明らかに次のコーディングがしたいがために書いていると思われる。
このうち1,2 はVB ならではの特有問題。
問題なのは、3。
近年になって久々に見かけたのですが、そのプロジェクトはJava技術者によるC#開発でした。
正直、びびった。
え?っていうより、本気ですか?
とも思ったが、こちらの方が可読性が上がるという理由。
メモリリーク云々の問題もあり、統一された箇所に書くのがよいか、
メモリ消費量の問題で必要時にコンパイルさせるのがよいか。
( New でない限り結果は同じだが。)
とも違う理由であったこともそうだが、可読性が上がるということにかなり疑問があった。
Web上のサンプルでもたまに見かける。
フロー制御初心者がやってしまうIF内宣言に見えるが違うらしい。
が、一緒だろ・・。
宣言をまとめることに執着すると書きにくい。
というのはあると思うが、可読性が下がることは無いだろうと感じる。
型が何なのすぐにわからない。とも違う。
その方たちは、かなりのJava猛者であったはずだが、この書き方を通していた。
が、私は嫌いだ。
好き嫌いで標準化はできないが、私が規約を作るなら暗黙規約のひとつに
宣言部は、まとめろ。
と、たぶん書くだろう。