質問

2009年08月30日 22時09分
  • 許せない変数名

情シスのオープンナレッジ『Syszo』サービス終了のお知らせ

質問

最近、ExcelVBAで作成された社内ツール(既に退職された方の遺産)の
改修を担当しているんですが、
これがとんでもないスパゲッティーで、ソースを追っていけばいくほど
憤りが強くなっていく日々です。

一番許せないのが、アルファベット1文字とか2文字の無意味な変数名!
まあ、ごくごくシンプルなスクリプトの中のループカウンタに"i"とかが
利用されるのはいいとして、
ループが入れ子になっているような複雑なプログラムで、
変数名に"i"や"ii"や、下手すると"iii"なんかが変数として使われてたりして、
可読性が低いったらありません。
(ついでに言うと、Option Explicitが宣言されていないので
変数宣言されていたりいなかったりするのも痛い!)

急がば回れではありませんが、日々、ちくちくとこのような基本的な
ところも修正しながら、そのついで(笑)みたいな感じで本質的な修正を
行っているような有様です。

こちらに出入りされている皆さんはご自分でプログラムを組まれる方も
多いかと思われるのですが、
他人の作ったプログラムで「これは許せない!」と思ったことってどんなことが
ありますか?
また、そういった「許せないプログラム」への良い対処方法などありましたら
ぜひお寄せいただければと思います!

よろしくお願いします。

4件の回答があります

回答

私のところでは 変数名は有意味(名前にその変数の性格を表すような名前を付ける)にするようにしています。その場合には変数宣言は必須です。
例外はループカウンタのようなもので、それは I J K .. の1文字にしています。

全体構造としては 私はどちらかというとウォーターフォール型です。
”共通に使える”、”繰り返しが入る”以外はあまりセクション化はしません。 
しかし、人によってはブチブチにセクションに切ってくれる(サブルーチン化を目指しているのでしょうが)ので見にくくてしようがないです。

対処法というと”雛形”を用意して「これを参考にして組め」くらいですね。
最初はそれでいいのですがユーザから無理難題を押しつけられてIF文が多くなるとだんだんスパゲッティボールに成っちゃいますね。

2009年09月02日 08時50分

回答

プログラムは本当に人のくせがでますよね。

コメントや処理の概要が一緒に書かれているプログラムは、
読んで勉強になるし、改修する側としてはありがたいですね。

細かいことを言えばきりがないですが、
やはりさらっと眺めて、読むのがつらい(嫌になる)プログラムは許せないです。ロジックも構文もシンプルなのがいいです。

せめて、変数の意味がわかるように名前をつけるなり、
変数の宣言文や初期化の段階でコメントに意味を書いておくことや
入れ子の開始と終了の位置をあわせ、入れ子の最後にどこの入れ子の終了か
わかるようにコメントを追加しておくと、スパゲティコードが読みやすくなります。

回答

変数名や関数名は色々ありますね。

細かいことですが、恐らく異なる開発者がそれぞれつけたと思われる
ローマ字が表記が異なる変数名が混在している時があり、イラっときます。
 例)「ちゅうし」を表す変数名が「CHUSHI」「TYUSI」等。

なんらかのルールを作れば良いんですがね。
対処ですが、下手に修正して何かの影響が出たら嫌なんで、基本は
放置しています…。

一番許せないのは、「コメント内容が嘘」。
いや、実際自分もやってしまうことがあるんですが、一部ソースをコメントごと
コピペしてきて、ソースは修正するけどコメントはそのまま使ってしまうパターンです。
これは気付いたら直すようにしています。

2009年09月03日 23時31分

回答

私の作るExcelマクロもスパゲッティー状態です。
変数宣言はかならず行うようにしています。
ループカウンタは i を使っています。2つ以上は i2 i3 ... です。
自分としてはわかりやすく作ったつもりでも半年後の自分が見るともう判りません。 幸い私しか見る人はいないので「まぁいいかぁ」です。

あなたもコメントしましょう!