La procedura migliore per passare la stringa formattata ai metodi

1

Anche se potrebbe essere banale per qualcuno, trovo un po 'scomodo quando qualcuno formatta la stringa mentre la passa come parametro a un metodo. Ad esempio,

AddMessage( string.Format("{0} (" + Constants.Message1 + ")",
    Path.GetFileNameWithoutExtension(document.FileName)),           
    string.Format("{0}" + FileExtensionPdf,
    Path.GetFileNameWithoutExtension(document.FileName)));

Ho fatto un semplice esempio qui, ma a volte potrebbe diventare un po 'confuso. Preferisco non farlo e invece formattare la mia stringa prima di passarli al metodo. Per me, questo riduce la leggibilità.

Vorrei sapere se esiste una pratica standard che va contro lo stile di cui sopra. Dato che sto facendo una revisione del codice, non sono sicuro di doverlo inserire come commento.

    
posta Shakti Prakash Singh 12.01.2016 - 14:55
fonte

3 risposte

6

Probabilmente modificherei il tuo codice di esempio qualcosa del genere:

var fileName = Path.GetFileNameWithoutExtension(document.FileName);
AddMessage(
    foo: string.Format("{0} ({1})", fileName, Constants.Message1),
    bar: string.Format("{0}{1}", fileName, FileExtensionPdf));

Penso che sia corretto formattare l'input direttamente nella chiamata finché lo si fa in modo leggibile. Qui uso anche argomenti con nome dato che sono due argomenti di stringa e voglio comunicare chiaramente ed evitare lo stupido errore di scambiare questi argomenti.

L'uso di una variabile temporanea per il nome del file senza estensione è sia un'ottimizzazione del codice che della leggibilità.

    
risposta data 12.01.2016 - 15:15
fonte
4

Semplificherei la risposta di Torbjørn con l'interpolazione delle stringhe:

var fileName = Path.GetFileNameWithoutExtension(document.FileName);
AddMessage($"{fileName} ({Constants.Message1})", $"{fileName}{FileExtensionPdf}");
    
risposta data 12.01.2016 - 15:49
fonte
1

Sono d'accordo che l'espansione lo rende più leggibile e forse più facile da eseguire il debug. non sono sicuro che lo farei comunque come un problema.

const string msgFormat1 = "{0} ({1})";
const string msgFormat2 = "{0}.{1}";

string fileName = Path.GetFileNameWithoutExtension(document.FileName);

string msg1 = String.Format(
    msgFormat1,
    Constants.Message1, 
    fileName
);

string msg2  = string.Format(
    msgFormat2, 
    fileName,
    FileExtensionPdf,
);

AddMessage(msg1, msg2);

modifica: ha rubato l'ottimizzazione del nome file da un'altra risposta

    
risposta data 12.01.2016 - 15:17
fonte

Leggi altre domande sui tag