Qual è una buona convenzione di denominazione per una mappa / hash di ricerca?
-
03-07-2019 - |
Domanda
Nell'elaborazione dei dati, ho spesso bisogno di creare una struttura di dati di ricerca per mappare un identificatore a un altro. Ad esempio concreto, prendiamo una struttura che contiene una mappatura da 1 a 1 tra il codice di 2 caratteri di un paese e il suo nome completo. In esso avremmo
AD -> Andorra
AE -> United Arab Emirates
AF -> Afghanistan
Qual è un buon nome per la variabile che contiene questa mappa? Alcune idee (userò i nomi dei casi di cammello):
countryNameByCode
nameByCodeLookup
nameCodeLookup
codeToName
Soluzione
Il mio voto sarebbe per codeToName
in questo caso particolare, e immagino che generalizzi. Questo non vuol dire che è il nome che mi sarei scelto in tutti i casi; dipende molto dall'ambito, dall'ulteriore incapsulamento e così via. Ma sembra un buon nome, ciò dovrebbe aiutare a rendere leggibile il tuo codice:
String country = codeToName["SV"];
Sembra abbastanza carino, dovrebbe essere facilmente comprensibile da chiunque. Possibilmente cambiare la parola "codice" a qualcosa di più preciso ("countrycode") sarebbe la mia prossima scelta).
Altri suggerimenti
country_name = countries_by_code[country_code]
Supera la dettatura telefonica & # 8220; & # 8221; test e suona più come un linguaggio naturale.
Mi piace usare i plurali per le raccolte.
countryNames
Modifica: countryCodes
è errato perché stai mappando da un codice a un nome.
Di solito lo faccio in questo modo:
countryCodeMappingByName
O se la mappatura è unica, semplicemente:
countryCodeMapping
Usa qualcosa che suona bene quando lo pronunci. Questo significa anche nominare le variabili chiave in modo appropriato. Esempio:
countryName = countries[countryCode];
Questo ha perfettamente senso: dai a paesi
un countryCode
e restituisce un countryName
. Ciò sarebbe ridondante:
countryName = countryCodesToNames[countryCode];
In C #, chiamerei un tipo che fa questo CountryCodeToNameMapping
. Di solito chiamerei una variabile countryCodeToNameMapping
, ma in alcuni contesti molto ristretti ( ad esempio , lambdas), probabilmente la chiamerei c
o m
.
Un altro voto per aver solo pluralizzato ciò su cui stai mappando.
ad es. country = paesi [code]