mam następny kawałek kodu:Czy powinienem unikać magicznych ciągów, jak to tylko możliwe?
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;
}
Robię kilka parsings AD, więc mam pewne ciągi jak "DC =", "objectCategory =" "LDAP: //",”, ",". " tak i tak. Znalazłem powyższy kod bardziej czytelny niż poniższy kod: (. Może znaleźliście przeciwny, let me know)
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;
}
Nawet mogę mieć "DC" i "DC =" powinienem myśleć nazwy tych zmiennych lub podzielić je na dwie części :(Wtedy moje pytanie. powinienem unikać magiczne ciągi możliwie
AKTUALIZACJA
pewne wnioski:.
- Istnieją sposoby, aby w ogóle unikać używania ciągów, co może być lepsze. Aby to osiągnąć, można użyć: klas statycznych, enumeratorów, stałych liczbowych, kontenerów IOC, a nawet refleksji.
- Stały ciąg znaków pomaga upewnić się, że nie masz żadnych literówek (we wszystkich odwołaniach do ciągu znaków).
- Stałe ciągi znaków interpunkcyjnych nie mają żadnej globalnej semantycznej. Bardziej czytelne byłoby ich użycie, ponieważ są one "," ". Użyj stałej, aby ten przypadek mógł być rozważony, jeśli ta stała może się zmienić w przyszłości, jak zmiana "," przez "." (Masz stałą wartość, która może ci pomóc w refaktoryzacji, chociaż nowoczesne narzędzia, takie jak resharper, robią to bez potrzeby stosowania stałej lub zmiennej).
- Jeśli używasz tego łańcucha tylko raz, nie musisz go przekształcać w stałą. Należy jednak pamiętać, że stałą można udokumentować i pokazać w dokumentacji (jako Javadocs). Może to być ważne w przypadku nietrywialnych wartości ciągu.
Myślę, że możesz być zainteresowany tematem [this] (http://programmers.stackexchange.com/questions/142278/are-nullable-types-preferable-to-magic-numbers). – Torv
Myślę, że celujesz w odpowiedź z MainMa, prawda? –
Tak, dobrze. Och, założyłem [inny interesujący temat] (http://programmers.stackexchange.com/questions/145738/should-a-string-constant-be-defined-if-its-only-going-to-be-used-once) dla Ciebie. te tematy nie odpowiadają na pytanie, ale są interesujące =) – Torv