青空を目指して2

どこまでも続く日々日常。ゲーム・音楽好きのおっさんの半生。日々日常とちょっとだけ思ったことの日記。

駄文

見た目似たようで昨日は違うようなインスタンス
同じクラスで切り替えるようなプログラム構造はやめろ。
それでもまだ、コンストラクタで指定したら内部が完全に切り替わるような
構成がされているならわからんでもないが・・・。
素直にインスタンスごとに専用クラスを作ったほうが
メンテナンス性が高いシンプルなつくりになる。仕掛けだけでのパズルチックな構造のコードを書いちゃうのはテクニカルな頭のいいやつの特徴だな。
昔のそれなりに頭のいいプログラムたちはすぐにこういうコードを書く。
単純にコード容量が減るだけの圧縮プログラム。
あと不必要な、汎用化も大好きだな。設定を切り替えるだけでいろんな動きが出来る!的な。
でも実際に使うのは20~30%とかそんなもの。あとは勝手な未来予測からくる要らないコードの嵐。さらにそういうものたちが従来機能と干渉し、不具合を招き、それを解消するために無駄なコードや機能がてんこ盛り。
自分でメンテするならいいが、人にメンテさせることを全く考えていない独りよがりの構造。
さらに他人がメンテ拡張する際に、そのベース設計思考を全く汲まず表面上の作りだけを真似した、劣悪コピーコードを増築する。これが更に最悪だ。無理やり、って言葉が良く似合う。デバッグで何とかバランスを取って組み上がっている、危険極まりないプログラム。正直設計思想がある分初期の設計のほうが、まだましだ。増築するやつらは完全組み逃げだ。そこにもし設計思想があるとしたら、「ベース部分は理解しがたいから出来る限りメスを入れない」「ベースの上になんとなく動くものを増築し、そこが動くだけを確認する」って物だ。正直とてもプロの仕事とは思えない。妥協、逃げ、技術不足の賜物だ。


俺が設計する世界は、出来る限りわかりやすくだ。機能の分析。システムの最小化。最小システムの組み合わせで作る大システム。自然との完全調和。システムの完全分離。これが理解できれば、うちらの仕事は勝ったも同然。シンプルな思考の連続でしかないんだがなぁ。複雑なシステムなんて俺には理解できないからね。何度も言うけど頭がいい人たちってのは複雑なシステムを複雑なまま理解できるのがすごすぎるわ。俺はいつも全部の要素を洗い出し、その小要素一つ一つの意味、仕掛けを理解し、その中でそのシステムたちがどういう相互関係で大きなシステムを産み出しているか、って言うのを把握しないとわかんないんだ。だから複雑なシステムを見せられてもすぐにはそのものが理解できない。噛み砕かない限り理解できない。基本的にバカなんだ俺は。それが悔しいから丁寧に一個ずつ片付けているだけなんだ。
ただね、これをバカ正直にずーっとやって長年積み上げてきたら、気がついたらある能力が身についていたんだよね。小システムの組み合わせにはパターンがある。モデルがある。噛み砕くことを長くやってくるとそういうパターン、モデルの蓄積が増え、どんなものを見てもたやすくモデル化、パターン分析、って言うのが出来るようになってきたんだよね。さらにそこにスコープやレイヤーといった概念を入れるともっと抽象化されたモデルやパターンが見える。こうなったら何を見ても丸裸だ。どんなものを見ても、すぐに分析/解析が出来るようになってきた。