質問

最近では、ユニコードを使用する言語が増えています。これは良いことです。しかし、それは危険ももたらします。過去には、1とlと0とOを区別するのに問題がありました。しかし、今では完全に新しい範囲の類似した文字があります。

例:

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

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

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

役に立ちましたか?

解決

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

これは、開発者(オープンソース、または製品と一緒に販売されるコード)が世界中のどこででも見ることができるコードに特に当てはまります。

他のヒント

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

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

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

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

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

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

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

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

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

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

使用している言語によって異なります。例えば、Pythonでは、私のアプリケーションは複数の言語で動作する必要があるため、ユニコードに固執しやすいです。だから、私が知らない誰か(何か)からファイルを受け取ったとき、私はLatin-1を仮定してUnicodeに翻訳します。

ラテンアメリカにいるように、私のために働いています。

実際、エブリシングが完全に解決されると、すべてがスムーズに進みます。

もちろん、これは選択した言語に依存します。

識別子名にユニコードを使用したことはありません。しかし、私の頭に浮かぶのは、Pythonがバージョン3でUnicode識別子を許可していることです: PEP 3131

Unicodeを広く使用する別の言語は、要塞です。

ユニコードを使用しないことにした場合でも、使用するライブラリを使用すると問題が表面化します。そのため、一定の範囲でそれと共存する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top