グローバル変数とスタティックおじさん

他人が書いたソースコードを読んでいると、知らないことは大いに勉強になる反面、時々とんでもないものに出くわすことがある。その一例がグローバル変数だったりするわけだが、最近はオブジェクト指向フレームワーク上に作られるソフトウェアが多いので、その流儀に従った(?)のか適度にオブジェクト指向を目指していような形跡がある。しかも、そのような問題コードはクラス名や変数名で一目瞭然なので、コードの静的解析をかけるまでもなく明らかだったりする。

  • GlobalObject
  • CommonData
  • SharedInstance

本来なら、ある限定されたクラスにのみ関与するのでクラスの位置付けを変更して明示的に関連性を示すとか、或る特定の情報を示すのだから適切な名前に変更して役割を変更する等の対策を取れば、もう少し誤解を減らせそうな気がするのだけど、なんせグローバル変数全盛期に生まれ育った「staticおじさん」にはそのような考え方は通用しない。そんな旧世代の考え方を無理矢理に今の開発現場にも適用しようとする姿を見ていると、「やっぱりベテランは使えない」と感じてしまう。

業界の情シス部門やSIerで何十年前にCOBOLアセンブラなどで開発を担当し、現在は現役でコードを読むことも書くこともないが、開発基準やアーキテクチャを決める上で発言権のある、いわゆる上級エンジニアという立場の方々が多数いらっしゃいます。ここではそのような方々をちょっと親しみを込めて総称的にstaticおじさんと呼ぶことにしましょう。

staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して

そもそも、staticの濫用もグローバル変数も存在しないフレームワーク上で開発をしているのに、わざわざそのような昔ながらの流儀を意図的に持ち込んでいる時点で開発としては失敗しているし、グローバル変数の問題点が繰り返し指摘されているにもかかわらず、それを無視して自分だけの都合で使い続ける鈍感さにも問題が有るように思う。

ソフトウェア開発のパラダイムは刻々と進化を続けている。昔はそのやり方が「当たり前」の時代であったのかも知れないけれど、開発技術の進化に伴っていつの間にか「時代遅れ」に変わってしまうことが珍しくない。自分自身のスタイルにこだわるのは結構だとは思うけど、周囲の開発者との間にギャップが生じるようになったら、それは要注意の兆候ではないかと思っている。



関連