Domanda

Oggigiorno, più lingue utilizzano unicode, il che è positivo. Ma presenta anche un pericolo. In passato lì c'erano problemi che distinguevano tra 1, le 0 e O. Ma ora abbiamo una nuova gamma completa di personaggi simili.

Ad esempio:

ì, î, ï, ı, ι, ί, ׀ ,أ ,آ, ỉ, ﺃ

Con questi, non è così difficile creare alcuni bug molto difficili da trovare.

Nel mio lavoro, abbiamo deciso di rimanere con i caratteri ANSI per gli identificatori. C'è qualcuno là fuori che usa identificatori unicode e quali sono le esperienze?

È stato utile?

Soluzione

Oltre ai bug di caratteri simili che menzioni e ai problemi tecnici che potrebbero sorgere quando si usano editor diversi (w / BOM, wo / BOM, codifiche diverse nello stesso file copiando la copia che è solo un problema quando in realtà ci sono caratteri che non può essere codificato in ASCII e così via), trovo che non valga la pena usare caratteri Unicode negli identificatori. L'inglese è diventato la lingua franca dello sviluppo e dovresti attenervi durante la scrittura del codice.

Questo lo trovo particolarmente vero per il codice che può essere visto in qualsiasi parte del mondo da qualsiasi sviluppatore (open source o codice venduto insieme al prodotto).

Altri suggerimenti

La mia esperienza con l'utilizzo di Unicode nei file sorgente C # è stata disastrosa, anche se era giapponese (quindi non c'era nulla da confondere con un "i"). A Source Safe non piace Unicode e quando ti ritrovi a riparare manualmente i file di origine corrotti in Word sai che qualcosa non va.

Penso che la tua politica solo ANSI sia eccellente. Non riesco davvero a vedere alcun motivo per cui ciò non sarebbe praticabile (fintanto che la maggior parte dei tuoi sviluppatori sono inglesi, e anche se non sono il mondo è abituato al set di caratteri ANSI).

Penso che non sia una buona idea usare l'intero set di caratteri ANSI per gli identificatori. Indipendentemente dalla tabella codici ANSI in cui stai lavorando, la tua tabella codici ANSI include caratteri che alcune altre pagine codici ANSI non includono. Quindi consiglio di attenersi ad ASCII, nessun codice di carattere superiore a 127.

Negli esperimenti ho usato una gamma più ampia di caratteri ANSI che non solo ASCII, anche negli identificatori. Alcuni compilatori lo hanno accettato. Alcuni IDE necessitavano di opzioni per i caratteri che potevano visualizzare i caratteri. Ma non lo consiglio per un uso pratico.

Ora passiamo alla differenza tra le code page ANSI e Unicode.

In esperimenti ho archiviato file sorgente in Unicode e usato caratteri Unicode negli identificatori. Alcuni compilatori lo hanno accettato. Ma ancora non lo consiglio per un uso pratico.

A volte ho archiviato file sorgente in Unicode e usato sequenze di escape in alcune stringhe per rappresentare i valori dei caratteri Unicode. Questa è una pratica importante e la consiglio vivamente. Ho dovuto farlo in particolare quando altri programmatori utilizzavano caratteri ANSI nelle loro stringhe e le loro tabelle codici ANSI erano diverse dalle altre pagine codici ANSI, quindi le stringhe erano corrotte e causavano errori di compilazione o risultati difettosi. Il modo per risolverlo è utilizzare le sequenze di escape Unicode.

Vorrei anche raccomandare di usare ASCII per gli identificatori. I commenti possono rimanere in una lingua non inglese se l'editor / ide / compilatore ecc. Sono tutti a conoscenza delle impostazioni locali e configurati per utilizzare la stessa codifica.

Inoltre, alcune lingue senza distinzione tra maiuscole e minuscole cambiano gli identificatori in minuscolo prima dell'uso e ciò causa problemi se la locale attiva del sistema è il turco o l'Azerbaigian. consulta qui per ulteriori informazioni sul problema delle impostazioni locali turche . So che PHP lo fa e ha un bug di vecchia data .

Questo problema è presente anche in qualsiasi software che confronta stringhe usando le impostazioni locali turche, non solo le implementazioni linguistiche stesse, solo per sottolineare. Causa molti mal di testa

Dipende dalla lingua che stai usando. In Python, ad esempio, è più facile attenermi all'unicode, poiché le mie applicazioni devono funzionare in diverse lingue. Quindi quando ricevo un file da qualcuno (qualcosa) che non conosco, presumo Latin-1 e traduco in Unicode.

Funziona per me, dato che sono in America Latina.

In realtà, una volta che tutto è stato risolto, l'intera cosa diventa una corsa fluida.

Ovviamente, questo dipende dalla lingua scelta.

Non ho mai usato Unicode per i nomi degli identificatori. Ma quello che mi viene in mente è che Python consente identificatori unicode nella versione 3: PEP 3131 .

Un altro linguaggio che fa ampio uso di Unicode è Fortress .

Anche se decidi di non usare l'unicode, il problema riappare quando usi una libreria che lo fa. Quindi devi conviverci fino a un certo punto.

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