エンジニアとして仕事をしているとダメなプログラムに遭遇することもしばしばである。
ダメなプログラムによく見られる特徴として「行き当たりばったり」ということが挙げられる。
例えば↓のようなプログラム。
function main($param) {
    // 引数を元にデータ取得
    $dataList = repos->find($param);
    // 何かの判定
    if (...) {
        // 何かの処理
    }
    // 何かの判定
    if (...) {
        // 何かの処理
    }
    // List全体から何かを検索
    foreach ($v as $dataList){
        if (...) {
            // 何かの処理
        }
    }
    // ここで再び何かのデータ取得!
    $dataList2 = repos->find(...);
    :
    :
    // こんな感じで何百行もダラダラ続く
}
処理の先頭でデータ取得をした後、雑多な処理を行った後、再びデータ取得を行っている。このようなコードは「行き当たりばったり」である。
処理に必要なデータは処理の先頭でまとめて取得しておくべきである。
無論、ある程度処理が進まないとデータ取得のキーになる値が決定できない場合はあるし、そのような場合は例外である。
しかし、このようなプログラムは多くの場合、特段の設計はされておらず場当たり的に(行き当たりばったり)で逐次的に書かれたものが多い。
その為、コードがスパゲッティ化し保守が非常に困難(あるいは不可能)という状態になりがちである。