「隙間をすべて埋めないと動かないオーブン」

引継ぎなどを行っていると、面白い作り、仕様になっているプログラムにでくわす。
それを、私は「隙間をすべて埋めないと動かないオーブン」と呼ぶことにした。

チキンを1羽オーブンで焼きたいんだが、オーブンの半分しか占めないので、このオーブンは動かない。
「う〜ん。なにかでかいものはないか?よし、このスイカを入れればすべて埋まるぞ。」 
これでこの、オーブンはきちんと問題なく動くようになる。

これと同じようなことがプログラムの世界で、結構頻繁に起こってる。
あなたの周りにも、そういったことはありませんか?

例えば、
「商品のレコードを追加するためには、なぜか、ダミーのユーザのレコードも追加しないとうまく動かない。」
「この関数に必要な引数は、1つ目だけなんだけど、なぜか使用してないのに、後2つセットしないと動かない」

とか…

こうなる原因を考えてみました。

1.ロジック的におかしいが、そうすれば簡単に実装できるから、そうしたんだけどナンカ文句ある?
2.オブジェクト指向、依存の問題、スコープってなに?動けばいいじゃん。