Ich habe das nächste Stück Code:Soll ich magische Saiten wie möglich vermeiden?
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;
}
ich einige parsings für AD zu machen, so habe ich einige Zeichenketten wie "DC =", "object =", "LDAP: //",“, ",". " so und so. fand ich den obigen Code besser lesbar als der Code unten: (. Sie können die gegenüberliegenden gefunden, lass‘mich wissen)
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;
}
Auch kann ich‚DC‘und‚DC =‘, denke ich sollte in die Namen für diese Variablen oder teilen diese in zwei :(Dann meine Frage:. Soll ich Magie Saiten wie möglich zu vermeiden
AKTUALISIERT
Einige Schlussfolgerungen:.
- Es gibt Möglichkeiten, Strings überhaupt zu vermeiden, die besser sein könnten. Um es zu erreichen, könnte es verwendet werden: statische Klassen, Enumeratoren, numerische Konstanten, IOC-Container und sogar Reflexion.
- Eine konstante Zeichenfolge hilft Ihnen sicherzustellen, dass Sie keine Tippfehler haben (in allen Verweisen auf eine Zeichenfolge).
- Konstante Zeichenfolgen für Interpunktion haben keine globale Semantik. Wäre lesbarer, diese zu verwenden, wie sie sind ",". Eine Konstante für diesen Fall kann in Betracht gezogen werden, wenn sich diese Konstante in der Zukunft ändern kann, wie zum Beispiel die Änderung "," von "." (Haben Sie eine Konstante kann Ihnen helfen, in diesem Refactoring, obwohl moderne Werkzeuge wie Nachzerhacker tun dies ohne Notwendigkeit einer Konstante oder Variable).
- Wenn Sie es nur Zeichenfolge verwenden, müssen Sie es nicht zu einer Konstante machen. Beachten Sie jedoch, dass eine Konstante dokumentiert werden kann und in der Dokumentation (als Javadocs) auftaucht. Dies kann für nicht triviale Zeichenfolgenwerte wichtig sein.
Ich denke, dass Sie an [this] Thema interessiert sein könnten (http://programmers.stackexchange.com/questions/142278/are-nullable-types-preparable-to-magic-numbers). – Torv
Ich denke du zielst die Antwort von MainMa, oder? –
Ja, hast du recht. Oh ich gründete [ein anderes interessantes Thema] (http://programmers.stackexchange.com/questions/145738/should-a-string-constant-be-defined-if-its-only-going-to-be-used-once) für dich. Diese Themen beantworten die Frage nicht, aber sie sind interessant =) – Torv