2011-03-04 53 views
2

可能重複:
Why are we using i as a counter in loops?將for循環中變量的名稱保留爲「我」可以嗎?

在Java中,我經常有類似的代碼片段:

for (int i = 0; i < someLimit; i++) { 
// some relatively simple and short code to iterate 
} 

事實上,我很少命名循環變量爲任何除了「i」以外,我在循環內重複使用循環變量。

我習慣於描述性地命名變量,但我還沒有看到或被教過命名for循環變量。

離開命名爲「i」的做法不好的for循環變量?

+0

_i_代表指數,那你覺得現在:)? – 2011-03-04 21:52:00

+0

見:http://stackoverflow.com/questions/454303/why-are-we-using-i-as-a-counter-in-loops和http://stackoverflow.com/questions/4137785/why-are -varibles-i-and-j-used-for-counters – 2011-03-04 21:56:24

回答

0

如果代碼真的很簡短,那麼它可以是好的。

雖然我從來不這樣做。我學會了使用沒有內置重構功能的工具進行編程,並且無法自動查找所有變量引用。我們必須使用簡單的文本搜索來搜索變量。我不得不維護一些代碼,他們只使用單字母變量名稱。這真是一場噩夢,我現在總是使用長而唯一的變量名!

但隨着現代工具,用於短代碼段索引單字母變量名就可以了。

0

是的,這是完全可以接受的,而且通常是標準的做法。

標準實踐是i,j,k爲嵌套循環。

for(int i = 0; i < 5; i++) 
{ 
    for(int j = 0; j < 5; j++) 
    { 
     for(int k = 0; k < 5; k++) 
     { 
      // do stuff 
     } 
    } 
} 

除了三個嵌套循環,除了標誌着一些其他的問題,它留給程序員定義內環規則。

+0

小心解釋-1? – Nate 2011-03-06 01:52:35

+1

我不能......所有回覆都得到了。我投了一些,至少將它設置爲0(和你的一樣),幸運的是有人也爲我做了同樣的事情。這真的是那些不那麼美好的時刻之一。 – jpinto3912 2011-03-06 10:41:36

+0

是的,同意了。我在這個問題上投了所有downvoted帖子。他們都在說同樣的事情!我不需要代表,但如果在有人發現這些投票帖子被找到並認爲他們錯了的道路上,會很難過。 – Nate 2011-03-07 04:40:58

0

我的意見 - i正好適合這個目的。我只使用一個字母變量來表示短索引器和lambda表達式,而且我看到大多數其他開發人員也是這樣做的,所以我就此與您聯繫。

0

代碼的可讀性方面,幾乎每個人都明白,i是索引。給它一些其他的名字幾乎使閱讀代碼變得更加困難。

但我同意你關於複雜的情況。當你有嵌套循環時,在閱讀代碼時很難保持頭腦裏的含義,比如說i, jk。因此,給這些索引更有用的名稱可能會有所幫助。

在我看來,除了選擇這些變量名稱的可讀性之外沒有其他理由。

0

恕我直言,這是相當醜陋,尤其是在嵌套循環。例如:

for (int i; i < someLimit; i++) 
{ 
    for (int z; z < someLimit; z++) 
    { 
     ... // array{i, z} 
    } 
} 
0

我通常代表索引。所以,如果你想要一些更具描述性的命名,請使用完整的單詞。 變量名稱的全部範圍可能並不總是,並且本身提供了更易讀的代碼。考慮hungarian notation真正看到如何努力使事情更具可讀性可能適得其反。就我個人來說,使用兩個字母陳述varable(UC,UL,SI,S,LP等)的類型,後面是變量名中的大寫首字母縮寫和如果的話是超過5個字符長。

所以你,在我的書面方式,可能是siInd