LoginSignup
1
0

More than 5 years have passed since last update.

事故メモ(自己メモ)

Posted at

低レベルなバグだったので反省込めてメモる。そして二度と思い出さないことにする。
本バレが嫌なので言語をC#に変換しとく。

intの配列(つまりint[])の間に要素を一つ挿入するメソッドを書いてた。

        var v = new[] { 1, 2, 3, 4, 5, 6, 7, 8 };
        v = InsertArray(v, 2);//v = {1,2,0,3,4,5,6,7,8}

InsertArray()をさっくり作った

    static int[] InsertArray(int[] p_array,int p_index)        {
        int[] result;
        result = new int[p_array.Length + 1];
        for(int i=0; i < p_array.Length; i++)            {
            if (i < p_index)
                result[i] = p_array[i];
            if (i == p_index)
                result[i] = 0;
            if (i > p_index)
                result[i + 1] = p_array[i];
        }
        return result;
    }

境目でバグ起こすんじゃね?と引っかかりながらも当時は必死でとりあえず実戦投入してシステムは動いたのでOKとしてた。
ソースコードレビュー?何それおいしいの?

で、後日追加の改修が入ったときに余裕があったのでInsertArray()をきちんとテストしてみると、やっぱし挿入部分でバグ起こしてやがった。

        var v = new[] { 1, 2, 3, 4, 5, 6, 7, 8 };
        v = InsertArray(v, 2);//v = {1,2,0,0,4,5,6,7,8}

たまたまシステムでは挿入部分付近は参照していなかったのでセーフだったがメソッドが名前通りには機能していないのは気持ち悪い。
修正したいけどシステムの動作は問題ないわけで修正するための理由が見つからぬ。
どうせ数か月のうちには消滅することが確定しているシステムなのでこのメソッドのバグはこのまま闇に葬ろう。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0