Vale la pena di utilizzare la formattazione di stringa invariante di cultura in applicazioni a cultura singola?

5

A volte, abbiamo bisogno di inserire un ID intero in una stringa, ad esempio quando si genera HTML form <select> items.

La chiamata di int.ToString() può generare cifre al di fuori dell'intervallo [0-9] in alcune culture. Per questo motivo, devi specificare la cultura invariabile nelle app di spanning cultura (ad esempio int.ToString(CultureInfo.InvariantCulture) ).

Vale la pena di fare attenzione e farlo anche se è noto che l'applicazione verrà eseguita solo in una specifica cultura occidentale (ad esempio in tedesco)? Sembra essere la cosa "corretta" da fare. O è uno sforzo non ben speso?

Aggiornamento: sembra che la formattazione di interi sia quasi immune alla cultura in ogni caso. La mia ipotesi era sbagliata, ma terrò il testo per il contesto.

    
posta boot4life 09.05.2016 - 20:10
fonte

3 risposte

4

Dato che l'output sarà esattamente lo stesso, questa è una scelta piuttosto soggettiva. Se sai che l'applicazione verrà eseguita solo in una cultura specifica, direi di lasciarla per semplicità.

Ma se l'applicazione potrebbe essere portata su più culture, direi di lasciarla. Anche se conosci tutte le culture che porti a tutti hanno la stessa formattazione di interi, non dovresti richiedere che tutto i lettori del codice sanno che, e senza saperlo, il codice sembra un insetto sottile. Quindi chiarisci l'intenzione nel codice che si suppone che il valore sia invariante piuttosto che specifico per la cultura.

    
risposta data 09.05.2016 - 20:59
fonte
1

Direi di sì.

Il problema è che anche se le persone sono tutte in Germania, ciò non significa nesaceralmente che eseguiranno versioni tedesche di Windows. Le persone emigrano e a volte portano con sé i loro computer, le persone eseguono versioni in inglese di Windows perché il altro software è rotto sulle versioni tedesche di Windows.

Come dici tu, questo non è un problema con gli ints ma è un grosso problema con i numeri in virgola mobile.

    
risposta data 10.05.2016 - 01:25
fonte
1

Anche se non hai mai intenzione di correre su un altro sistema o in un'altra cultura, una volta che il fatto cambia, e potresti essere sorpreso di quanto spesso accade, affermare la cultura invariabile in questo caso segna il tuo intento, che aiuterà i futuri manutentori di il tuo codice, chi potrebbe essere te stesso.

In altre parole; se essere implicito non trasmette correttamente il tuo intento, sii esplicito.

    
risposta data 13.05.2016 - 19:12
fonte

Leggi altre domande sui tag