ho il prossimo pezzo di codice:Devo evitare le stringhe magiche possibile?
internal static string GetNetBiosDomainFromMember(string memberName)
{
int indexOf = memberName.IndexOf("DC=", StringComparison.InvariantCultureIgnoreCase);
indexOf += "DC=".Length;
string domaninName = memberName.Substring(indexOf, memberName.Length - indexOf);
if (domaninName.Contains(","))
{
domaninName = domaninName.Split(new[] { "," }, StringSplitOptions.None)[0];
}
return domaninName;
}
Sto facendo alcune parsings per AD, quindi ho alcune stringhe come "DC =", "objectCategory =", "LDAP: //",", ",". " così così. Ho trovato il codice di cui sopra più leggibile il codice qui sotto: (. Potrebbe essere trovato il opposto, vediamo un po' me lo faccia sapere)
private const string DcString = "DC=";
private const string Comma = ",";
internal static string GetNetBiosDomainFromMember(string memberName)
{
int indexOf = memberName.IndexOf(DcString, StringComparison.InvariantCultureIgnoreCase);
indexOf += DcString.Length;
string domaninName = memberName.Substring(indexOf, memberName.Length - indexOf);
if (domaninName.Contains(CommaString))
{
domaninName = domaninName.Split(new[] { CommaString }, StringSplitOptions.None)[0];
}
return domaninName;
}
Anche io possa avere 'DC' e 'DC =', dovrei pensare in i nomi di questa variabili o dividere questi in due :(Allora la mia domanda:. Devo evitare di stringhe di magia possibile
AGGIORNATO
Alcune conclusioni:?.
- Ci sono modi per evitare di utilizzare le stringhe, il che potrebbe essere migliore. Per realizzarlo potrebbe essere utilizzato: classi statiche, enumeratori, costanti numeriche, contenitori IOC e persino riflessione.
- Una stringa costante consente di assicurarsi di non avere errori di battitura (in tutti i riferimenti a una stringa).
- Le stringhe costanti per la punteggiatura non hanno alcuna semantica globale. Sarebbe più leggibile utilizzare questi come sono ",". Utilizzare una costante per questo caso può essere presa in considerazione se tale costante può cambiare in futuro, come cambiare "," da "." (Avere una costante può essere d'aiuto in quel refactoring sebbene gli strumenti moderni come resharper lo facciano senza bisogno di una costante o variabile).
- Se lo si utilizza solo una volta, non è necessario trasformarlo in una costante. Considera comunque che una costante può essere documentata e mostrata nella documentazione (come Javadocs). Questo può essere importante per valori di stringa non banali.
Penso che potresti essere interessato a [questo] (http://programmers.stackexchange.com/questions/142278/are-nullable-type-preferable-to-magic-numbers) argomento. – Torv
Penso che il tuo obiettivo sia la risposta di MainMa, giusto? –
Sì, hai ragione. Oh ho fondato [un altro argomento interessante] (http://programmers.stackexchange.com/questions/145738/should-a-string-constant-be-defined-if-its-only-going-to-be-used-once) per te. questo argomento non risponde alla domanda ma sono interessanti =) – Torv