インデックス
「0始まり」か「1始まり」かでoff-by-one-errorにはまる。
C言語であれば「0始まり」が配列のインデックスで一般的。
言語によっては「1始まり」が配列のインデックスで一般的かもれいない。
関数の引数として渡す時に「0始まり」か「1始まり」か分かる名前が良い。
自分はCやC++実装の場合
idx : 0始まり
idx_st1: 1始まり
のような名前付けにしている (Cでは0始まりが一般的としてidx_st0とはしない)。
この名前付けで失敗は減ったが、人から引き継いだコードではそれを実施できない。