Domanda

Per esempio:

String login = String.Format("computer={0}&ver={1}.{2}.{3}&from={4}&realcomputername={5}&type={6}&Channels={7}&Hotkeys={8}&ID={9}\r\n",
            serviceConfig.Computer,
            serviceConfig.Version.Major,
            serviceConfig.Version.Minor,
            serviceConfig.Version.Build,
            userName,
            Environment.MachineName,
            type,
            serviceConfig.ChannelsString,
            serviceConfig.HotKeysString,
            serviceConfig.AlarmGroupName);

Questo non rende il codice molto leggibile, e come vengono aggiunti sempre di più parametri, sembra più brutto ed è più confusa per trovare quale parametro va in quale slot.

So che questa è una domanda niubbo, e penso che sto solo chiedendo come formattare il testo per essere più leggibile, ma se c'è un modo migliore per fare questo, mi piacerebbe sapere anche questo.

È stato utile?

Soluzione

Si potrebbe guardare il StringBuilder classe e dividere l'assemblaggio della stringa su più righe.

Il AppendFormat metodo (grazie Joel) è ciò che si desidera in questo caso.

Altri suggerimenti

String login = String.Format(
    "computer={0}"+
    "&ver={1}.{2}.{3}"+
    "&from={4}"+
    "&realcomputername={5}"+
    "&type={6}"+
    "&Channels={7}"+
    "&Hotkeys={8}"+
    "&ID={9}\r\n",
    serviceConfig.Computer,
    serviceConfig.Version.Major,
    serviceConfig.Version.Minor,
    serviceConfig.Version.Build,
    userName,
    Environment.MachineName,
    type,
    serviceConfig.ChannelsString,
    serviceConfig.HotKeysString,
    serviceConfig.AlarmGroupName);

Supponendo che si può usare LINQ, si può spingere le vostre argomentazioni in una Dictionary<string, string>, quindi unire gli argomenti insieme:

Dictionary<string, string> args = new Dictionary<string, string>
{
    {"computer", serviceConfig.Computer},
    {"ver", string.Format("{0}.{1}.{2}",
        serviceConfig.Version.Major,
        serviceConfig.Version.Minor,
        serviceConfig.Version.Build)},
    {"from", userName},
    {"realcomputername", Environment.MachineName},
    {"type", type},
    {"Channels", serviceConfig.ChannelsString},
    {"Hotkeys", serviceConfig.HotKeysString},
    {"ID", serviceConfig.AlarmGroupName},
};

string login = string.Join("&", args.Select(arg =>
    string.Format("{0}={1}", arg.Key, arg.Value)).ToArray());

Questa sarà una certa quantità minuscola più lento e più di una semplice string.Format intensivo della memoria, ma sembra che si sta per effettuare una richiesta HTTP, quindi posso quasi garantire che non sarà il collo di bottiglia.

Quella linea finale può anche essere tirato fuori in un metodo di estensione che è possibile utilizzare in qualsiasi momento si vuole costruire una stringa di query come questa.

Inoltre, è importante notare che poiché dizionario non mantiene ordine di inserimento, non si ha la garanzia che i parametri nella stringa di query sarà in questo ordine esatto. Questo non dovrebbe importa, ma nel caso in cui lo fa è possibile sostituire il dizionario con un List<KeyValuePair<string, string>> ( OrderedDictionary dovrebbe anche funzionare).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top