La risposta "giusta", a mio parere, dipende da come e perché si sta utilizzando la stringa.
Se la stringa viene utilizzata per la visualizzazione o presentata a un utente, la proprietà è un design migliore. Ciò rende molto più semplice aggiungere la localizzazione in seguito spostando la costante in file di risorse, senza dover modificare l'API. Questo rende anche più facile adattare la tua classe senza infrangere altro codice, dato che sei libero di cambiare la "costante" in qualsiasi momento senza rompere gli altri assiemi.
Raramente ho trovato usi appropriati per il secondo caso - pochissime stringhe sono veramente costanti, e quando lo sono, credo che in genere siano meglio rappresentate come un'enumerazione anziché una stringa. Questo è quasi sempre meglio di "stringhe magiche" nel tuo codice.
Le rare eccezioni sono in genere quando si interagisce con il codice legacy - se si ha a che fare con un'API distinta che si aspetta una stringa e la stringa è veramente costante, che utilizzare una costante è potenzialmente "migliore", in quanto è più efficiente e molto chiaro nel suo intento.
Inoltre, ricorda che i due approcci possono essere usati insieme:
private const string employeeString = "Employee";
public string EmployeeString { get { return employeeString; } }
Questo consente di utilizzare la costante, rendendo è chiaro intento, ma facilmente modificare questa più tardi senza rompere altro codice o cambiare la tua API . (Personalmente preferisco questa opzione alla seconda opzione, poiché la stringa magica nella proprietà getter è un odore di codice per me - mi piacciono le costanti come costanti ovvie, ma preferisco comunque le proprietà.)
fonte
2010-06-23 16:40:32
Ottimo feedback. Non userò per il livello dell'interfaccia utente, ma piuttosto cercherò di utilizzare le API che richiedono parametri di stringa per i parametri. – user118190