ページ 11

意味を持たない変数の名前の付け方

Posted: 2012年8月26日(日) 13:15
by Jimmy
C言語初心者です。

i,jなどの見ても何の変数か意味が分からない変数の名前の付け方を教えください。
なぜ、iなんですか?あまり使わないからですか?変数i,変数jの続きがあるとしたら何のアルファベットですか?

Re: 意味を持たない変数の名前の付け方

Posted: 2012年8月26日(日) 13:26
by softya(ソフト屋)
意味のない変数の名前は余り使わないほうが良いです。
そういう前提のものとであえて使う場合もあるi,jですが私はFORTRAN起源説を支持します。

昔のFORTRANではi,j,k,l,m,nからはじめる変数はINTEGER型を暗黙で宣言したのと同じでした。他はREAL型(Cで言うところのfloat)となります。
なのでFORTRANのプログラマーがいちいち型宣言せずに整数型が使えるi,j,kを好んで使ったのです。
ちなみにaではなくiが最初なのはINTEGERだと思われます。iだけで足らなくてj,k,l,m,nと追加されたのでしょう。

Re: 意味を持たない変数の名前の付け方

Posted: 2012年8月26日(日) 13:35
by Jimmy
おぉ!ありがとうございます。

あとから見たときに意味の分からない変数には名づけないようにします。ご丁寧にありがとうございました。

Re: 意味を持たない変数の名前の付け方

Posted: 2012年8月27日(月) 00:46
by かずま
数学で、数列、級数、行列を学んだことはありませんか?
例えば、

コード:

  S   =  a  +  a  +  a  + ... + a
   n      1     2     3          n

          n
      =  Σ    a
        i = 1   i
これをプログラムで書くと

コード:

    s = 0;
    for (i = 1; i <= n; i++) s += a[i];
m行 n列の行列の要素を a ij と書きますよね。
このように i, j, m, n は数学で、上記のような場合によく使われます。

だから、その後、コンピュータが発明され、プログラミング言語が作られたとき、
数学の記法をなるべくそのまま使いたいと考えたのは当然のことです。
FORTRAN というのは Formula Translation、すなわち「数式翻訳」という意味です。
n は number(個数)、i は index(添え字) を表しているものと思われます。

Re: 意味を持たない変数の名前の付け方

Posted: 2012年8月27日(月) 07:24
by beatle
しかしi, jはある程度経験のあるプログラマが見たら、使用している場所にもよるけど「ループのカウンタだな」と想像がつくと思います。
ループカウンタをiにするのは慣習的なことなので、むしろ他の名前にするとコードの可読性が失われるかもしれません。

コード:

for (int studentListIndex = 0; studentListIndex < studentList.size(); ++studentListIndex) {
    studentList[studentListIndex].do_something();
}

コード:

for (int i = 0; i < studentList.size(); ++i) {
    studentList[i].do_something();
}