フラグと心電図とインタプリタCの世界


別にクラスメイトを誹謗しようというわけじゃないんだ。でも、私みたいに趣味プログラミングって人ばかりじゃないから、強要もしないんだ。
でも憤りとか感じるし、実際ちょくちょく「改善すれば?」って言うんだけど、結局はぐらかされるから、ここに書いておく。




卒研の授業中、クラス図を考えてたんだ。
MVCの考え方でやってるから、ああviewで表示を通知するにはObserverパターンを使えばいいのか、とか。
で、ネットや書籍でObserverパターンについて調べてたんだ。


ふと別のチームのPC画面を見たら、Eclipseが見えたんだ。
でも、あれは多分Javaじゃなかった。C++のようにメモリ開放に気をつける必要のない安全で、ポインタが主役でライブラリが貧弱なC言語より快適な、今時珍しいインタプリタのC言語だったと思う。




本題。
デザインパターンどころか、Javaのインターフェースの使い方を理解してるやつはうちのクラスに数人程度だと思う。
というか、まずクラスすらまともに使えない。一つのクラスと一つのメソッドに延々と処理を書いてる。たまに思い出したかのようにC言語の関数みたいな扱いでメソッドに処理を分割してるけど、メンバ変数を介して値を渡してる。それじゃグローバル変数で受け渡してるようなもんだろ。
しかも、そのグローバル変数もどきの質と数が凄い。

int i;
int j;
int x;
int y;
int tate;
int yoko;
int takasa;
int haba;
int flg1;
int flg2;
int flg3;
int flg4;

これが一つのクラス内のメンバ変数。完全に再現してるわけじゃないけど、だいたいこんな感じ。
後半のフラグ関連はbooleanを知らないわけではなく、中には二つ以上の状態が入るからint型らしい。
……もうね、これ見た時は呆れた。なんで一つのクラスにこんなに変数が出てくるんだよ、と。


フラグは特に某氏の得意分野になっていて、大量に使ってプログラムを組んでる。
彼のソースはフラグ判定の為に、if文とswitch文のネストが4つ5つ出現する。マウスのホイールをちょっと動かすと心電図の波を見ているような錯覚に陥る。いつからJavaってEclipseじゃなくて、心電図でコード書くようになったんだろう。


フラグとif文の集合体でコーディングするから、スパゲティにバグがうじゃうじゃたかってる。
あのコードに「変更に強い」とか、「追加が容易」とか、「簡潔な記述」なんて当然ない。
テストファーストJUnitを薦めても、彼らは使わない。あるいは使えない。


もうね、オブジェクト指向で書く意味ないだろ。Cでやれよ、VB6.0でやれよ。
そんな彼らのコーディングを見てると、何故か自分が酷く勉強不足なのか、と思ってしまうんだ。人のふり見て我がふり直せって感じだと思う。
だから必死にデザインパターンの本とか買い漁って読むんだけど、彼らは分厚い専門書を見ただけで「すごいねー」って言って終わり。おいおい、お前さん達の仕事になる分野だろ。「すごいねー」じゃなくて、読んで、使って、身につけなきゃ駄目だろ。


まぁ、愚痴はこのぐらいにしとく。
なんか珍しく長文にだなぁ……






ところでなんでObserverってわざわざSubjectを渡さなきゃならんの?
これが不思議でしょうがない。