2012-03-20 5 views
29

L'inglese non è la mia lingua madre e non riesco a capire come scrivere correttamente gli esempi specificati. Quando dici qualcosa che aggrega oggetti plurali come "raccolta di francobolli" puoi dire alternativamente: "collezione di francobolli", ho ragione? Se dirai "collezione di francobolli" significherà una "collezione" che è un singolo "timbro"."elenco articoli" o "elenco elementi"

Ma spesso vedo classi con nomi come "ItemList" - non significa che tale classe è una lista che è un elemento di qualcos'altro? Tale campione è più flaring:

class ItemList: List<Item> 

Non è forse deve essere così ?:

class ItemsList: List<Item> 

Perché è raramente scritto così? O è una convenzione di denominazione dei linguaggi di programmazione? O solo frasi inglesi appropriate? :)

+0

perché ti importa? – WeaselFox

+23

@WeaselFox: alcune persone hanno una profonda curiosità per il mondo che li circonda e sono desiderosi di imparare. Se non sei una di queste persone, allora sei libero di ignorare questa domanda. –

+0

Non sono nemmeno un madrelingua inglese, quindi prendi il mio commento con un pizzico di sale. Preferirei 'ItemList' su' ItemsList', poiché il termine 'List' contiene già la nozione di più oggetti contenuti. – evnu

risposta

13

In inglese, una "collezione di francobolli" è una "collezione di francobolli". (nel migliore dei casi, la "collezione di francobolli" sarebbe compresa).

Nella programmazione, io non sono del tutto sicuro perché, ma abbiamo facciamo volte usano la forma "StampsCollection".

Può essere perché si tenta di utilizzare un gergo più preciso e logico rispetto a quello fornito dall'inglese tradizionale; iniziamo con il nome "Item", lo pluralizziamo su "Items", quindi sii preciso affermando che la nostra collezione di "Items" è una "List" piuttosto che una "Array" o qualche altra implementazione.

È probabile che si vedano entrambe le varianti, ma non importa.

Certamente, né in inglese né in programmazione, ItemsList implica un elenco di raccolte di Items, almeno non per la maggior parte delle persone.


... per un certo valore di "noi". Le scelte di denominazione sono, ovviamente, in base alle preferenze personali. Tuttavia, l'ho visto personalmente come una tendenza.

+1

"tendiamo ad usare il modulo" collezione di francobolli "invece" - FWIW, non lo faccio. Lo chiamerei 'stampCollection' o' stamps'. Personalmente non ricordo di aver visto 'stampsCollection' molto, ma potrebbe essere solo una stranezza del dialetto (sia in inglese che in linguaggio di programmazione) dei colleghi che ho avuto. –

+0

@SteveJessop: Suppongo che non ci sia modo di dare una risposta in entrambi i casi. Certamente è più probabile vederlo nella programmazione che nel vero inglese. –

+0

Forse ho sbagliato a leggere ciò che hai scritto in questo modo, ma ho letto "tendono a fare X" nel senso, "fai X più spesso che non X". Che in questo caso non sono d'accordo, ma ovviamente non posso dire se * hai * osservato quella tendenza nel codice che hai letto :-) Ancora peggio, uno dei problemi che i lessicografi affrontano e che affrontiamo qui, si distingue l'uso della variante dall'uso che è intenzionale al momento della scrittura, ma "errata". –

3

Trovo che lo ItemList sia molto più descrittivo. È un list di oggetti di tipo Item.

D'altra parte, se si ha una collezione di oggetti Item, si potrebbe chiamare Items e ItemsList designerebbe un list delle collezioni.

+2

Non mi aspetterei 'ItemsList' per essere una lista di collezioni. –

+0

@LightnessRacesinOrbit me nessuno dei due. Ma diciamo che qualcun altro ha fatto 'typedef std :: vector Items'. Come chiameresti 'std :: list '? –

+0

Vorrei 'typedef Items ItemsArray' e quindi' typedef std :: list ItemsArraysList', mentre accoltella l'autore originale nella faccia –

-1
class Items: List<Item> 

E più leggibile, in generale faccio un typedef

typedef List<Item> Items; 

con una classe più specializzata che nasconde la Lista

class Encapsulation 
{ 
    Items m_items; 
} 

"Preferisco composizione di aggregazione per l'eredità" è un idioma comune in OOP (citando Sutter/Alexandrescu)

L'incapsulamento di una raccolta è la maggior parte delle volte una buona pratica che riduce la complessità del codice di chiamata.