8

最近では、Unicode を使用する言語が増えています。これは良いことです。しかし、それは危険ももたらします。以前は、1 と l、および 0 と O を区別するのに苦労しました。しかし、今では、類似した文字の完全な新しい範囲があります。

例えば:

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

これらを使用すると、非常に見つけにくいバグを作成することはそれほど難しくありません。

私の職場では、識別子に ANSI 文字を使用することにしました。ユニコード識別子を使用している人はいますか? また、その経験は何ですか?

4

6 に答える 6

10

あなたが言及した同様の文字のバグと、異なるエディターを使用するときに発生する可能性のある技術的な問題 (w/BOM、wo/BOM、コピー貼り付けによる同じファイル内の異なるエンコーディングは、実際にエンコードできない文字がある場合にのみ問題になります) ASCII などで)、識別子に Unicode 文字を使用する価値がないことがわかりました。英語は開発の共通語になっており、コードを書く際は英語に固執する必要があります。

これは、世界中のあらゆる開発者が目にする可能性のあるコード (オープン ソース、または製品と共に販売されるコード) に特に当てはまります。

于 2008-11-16T20:55:04.437 に答える
6

C# ソース ファイルで Unicode を使用した経験は、たとえそれが日本語であったとしても悲惨なものでした (したがって、「i」と混同するものは何もありませんでした)。Source Safe は Unicode を好みません。Word で破損したソース ファイルを手動で修正していると、何かがおかしいことがわかります。

ANSI のみのポリシーは優れていると思います。それが実行可能ではない理由が本当にわかりません (開発者のほとんどが英語であり、世界が ANSI 文字セットに慣れていなくても)。

于 2008-11-16T20:57:11.983 に答える
3

識別子に ANSI 文字セット全体を使用するのは得策ではないと思います。作業している ANSI コード ページに関係なく、ANSI コード ページには、他の ANSI コード ページに含まれていない文字が含まれています。したがって、127 を超える文字コードは使用せず、ASCII に固執することをお勧めします。

実験では、ASCII だけでなく、識別子にも幅広い ANSI 文字を使用しました。一部のコンパイラはそれを受け入れました。一部の IDE では、文字を表示できるフォントにオプションを設定する必要がありました。しかし、実用的にはお勧めしません。

次に、ANSI コード ページと Unicode の違いについて説明します。

実験では、ソース ファイルを Unicode で保存し、識別子に Unicode 文字を使用しました。一部のコンパイラはそれを受け入れました。しかし、私はまだ実用的にはお勧めしません。

ソース ファイルを Unicode で保存し、一部の文字列でエスケープ シーケンスを使用して Unicode 文字値を表現したことがあります。これは重要なプラクティスであり、強くお勧めします。特に、他のプログラマーが文字列に ANSI 文字を使用していて、その ANSI コード ページが他の ANSI コード ページと異なっていたため、文字列が破損し、コンパイル エラーや不完全な結果が発生した場合に、これを行う必要がありました。これを解決する方法は、Unicode エスケープ シーケンスを使用することです。

于 2008-11-17T00:37:39.683 に答える
1

また、識別子に ascii を使用することをお勧めします。エディター/IDE/コンパイラーなどがすべてロケールを認識し、同じエンコーディングを使用するように設定されている場合、コメントは英語以外の言語のままになる可能性があります。

さらに、一部の大文字と小文字を区別しない言語では、使用前に識別子が小文字に変更され、アクティブなシステム ロケールが Turkish または Azerbaijani の場合に問題が発生します。トルコ語ロケールの問題について詳しくは、こちらを参照してください。PHP がこれを行うことは知っていますが、これには長年のバグがあります。

この問題は、言語の実装自体だけでなく、トルコ語のロケールを使用して文字列を比較するソフトウェアにも存在します。多くの頭痛を引き起こす

于 2008-11-16T23:19:17.783 に答える
0

識別子名にUnicodeを使用したことはありません。しかし、私の頭に浮かぶのは、Pythonではバージョン3のUnicode識別子が許可されているということです。PEP3131

Unicodeを多用するもう1つの言語は、Fortressです。

Unicodeを使用しないことにした場合でも、Unicodeを使用するライブラリを使用すると、問題が再発します。ですから、ある程度それと一緒に暮らす必要があります。

于 2009-01-23T09:15:57.233 に答える
0

It depends on the language you're using. In Python, for example, is easierfor me to stick to unicode, as my aplications needs to work in several languages. So when I get a file from someone (something) that I don't know, I assume Latin-1 and translate to Unicode.

Works for me, as I'm in latin-america.

Actually, once everithing is ironed out, the whole thing becomes a smooth ride.

Of course, this depends on the language of choice.

于 2008-11-17T01:55:16.890 に答える