2011-10-05 133 views
5

有時,當一個變量爲一個數組或列表的對象集合時,它很容易將變量命名爲複數。這是好的,還是我們應該始終堅持變量的單數名稱?作爲一個例子汽車的集合可以稱爲「汽車」或「汽車」我們應該避免變量的複數名稱嗎?

考慮另一個例子:

vector<string> students; // it is named as students rather singular student 

    students.push_back("Mark"); 
    students.push_back("Steve"); 

    // lets say we are using index to retrieve it, it does look 
    // a little clumsy 

    string current_student = students[0]; 

或者我們可以定義容器對象爲奇象下面,但它看起來像代表一個單一的對象,而不是收集學生?它確實使得索引看起來更好。

vector<string> student; 

另一種選擇,我個人喜歡的是這樣的:

vector<string> student_list; 

我追加「_list」(或者可能是駱駝符號)來收集變量名(不考慮如果向量或列表或地圖)。這種方式的名稱是單數,但它將自己標識爲對象的集合。

哪一種更好的方式或約定,以上更可讀?應該複數名稱是絕對避免?

也認爲另一個簡單的例子,以及,說我們正在進行一個實驗,我們記錄每天的溫度在不同的時間間隔的100倍,所以我們:

 float temperatures[100]; // or temperature[100]? or temperature_list[100]? 

甚至可能是不同的,如:

float temperature_data[100]? 

回答

3

複數是罰款 - 事實上,我會去甚至說預計 - 當名稱是指一個項目集合(即:集,列表,向量,數組等)。像temperature_data這樣的名稱可能會含糊不清,因爲它們是指單個項目還是一羣項目。另一方面,另一方面,temperatures明確指的是多於一個。

+4

愚蠢的挑剔:'溫度_數據'是'temperature_datum'的複數:P –

+0

如果有人真的使用了「數據」這個詞,我會同意你的意見。 :)這些日子裏,「數據」是一個羣體名詞,至少和複數一樣被認爲是單數。 – cHao

+0

這是否也適用於命名空間名稱?那麼,包含幾個策略類的命名空間應該命名爲'policies'而不是'policy'? – AlwaysLearning

6

呃,爲什麼不行?最後,您會提出哪種約定並不重要,重要的是它始終如一地使用,並且不會對可讀性產生負面影響。

+2

但是,在同一範圍內有'student' *和*'students'會引起可讀性問題:) –

+0

@MatthieuM .:我不知道。 「學生=學生」肯定會很糟糕。但是,如果'學生'總是* a *學生,那麼當您在「學生」循環時,它可能很容易成爲代表「當前」學生的變量的適當名稱。 – cHao

0

我看到沒有複數的問題 - 只要你避免在同一範圍內有單數和複數。只要讓變量具有描述性。

3

如果事物/對象是複數,那麼您應該用複數名稱命名它。

我不認爲students[0]的例子令人困惑。我把它看作是「學生 - 零度」,這基本上意味着讓我在學生指數爲零的任何地方。如果我已經正確地命名了它,那麼顯然這個東西是一個學生(單數)。

+0

目前,我在程序中有'粒子','離子','表面活性劑'的陣列,因爲'表面活性劑'是指多種類型的表面活性劑,而不是同一類型的多種表面活性劑分子。我有點不舒服... –

相關問題