ネタ元:0 ベース vs 1 ベース
ネタ元:どんだけ~?
ちと出遅れた感がありますが。
Visual Basic で特に変だと思うところ。
Dim i As Integer
Dim aaa(10) As Integer
For i = 0 To 9
aaa(i) = i
Next
とかって書く代わりに、1 ベースで
Dim i As Integer
Dim aaa(10) As Integer
For i = 1 To 10
aaa(i) = i
Next
と書く。それは良いと思う。
Java とかに慣れた人には違和感があるかもしれないけど、この辺は文化の問題かもしれない。
確かに、サイズ10の配列なら10番目の要素を「10というインデックスで」アクセスしたい、という主張もわからないでもない。
でも、だったら、1ベースで数え始めるべきじゃないのか?
Dim i As Integer
Dim aaa(10) As Integer
For i = 0 To 10
aaa(i) = i
Next
って書けるのはおかしくないか?
実際、MSILでも、配列宣言のところは
IL_0001: ldc.i4.s 11
IL_0003: newarr [mscorlib]System.Int32
とかってコード吐いてるし。単に一つ余分に作ってるだけでは……。
10個のつもりで11個の配列を作ってることの弊害の方が大きいような気がする。下手するとバグの温床?
せめて Option base 1 をデフォルトにできないものなのかなぁ。