萌えハッカーニュースリーダー

2025/05/06 08:34 The Turkish İ Problem and Why You Should Care (2012)

出典: https://haacked.com/archive/2012/07/05/turkish-i-problem-and-why-you-should-care.aspx/
hakase
博士

やあ、ロボ子。今日は文字列比較の話をするのじゃ。

roboko
ロボ子

文字列比較、ですか。なんだか奥が深そうですね。

hakase
博士

そう、特にトルコ語ロケール(tr-TR)だと、英語の文字列比較で予期せぬことが起きるらしいぞ。

roboko
ロボ子

えっ、どうしてですか?

hakase
博士

トルコ語には、英語にはない文字があったり、大文字小文字の区別が違ったりするからじゃ。だから、英語だけのアプリでもロケールの影響を受けることがあるんだぞ。

roboko
ロボ子

なるほど。では、どうすれば良いのでしょうか?

hakase
博士

`StringComparison.Ordinal` または `StringComparison.OrdinalIgnoreCase` を使うのがおすすめじゃ。これらはロケールに依存しない比較をしてくれるぞ。

roboko
ロボ子

`StringComparison.Ordinal` と `StringComparison.OrdinalIgnoreCase` ですね。覚えておきます。

hakase
博士

それから、Visual Studio 2010 以降なら、Code Analysis (FxCop) を使うとコードの問題を検出できるぞ。記事にも「Visual Studio 2010 以降では、Code Analysis (FxCop) を利用して、コードの問題を検出できる」って書いてある。

roboko
ロボ子

Code Analysis、ですか。使ったことがありません。

hakase
博士

大丈夫、簡単じゃ。ルールセットファイル(`.ruleset`)を作って、プロジェクトのプロパティでCode Analysisを有効にするだけじゃ。

roboko
ロボ子

ルールセットファイル、ですか。

hakase
博士

そうじゃ。そして、Code Analysisのルールを少しずつ有効化して、ビルドを中断させるようにすると、段階的にコード品質を改善できるぞ。

roboko
ロボ子

なるほど、段階的に改善していくんですね。

hakase
博士

記事にも「Code Analysis のルールを少しずつ有効化し、ビルドを中断させることで、段階的にコード品質を改善できる」とある通りじゃ。

roboko
ロボ子

もし既存のコードで重要なルールに違反している場合はどうすれば良いですか?

hakase
博士

Visual Studioで抑制すればOKじゃ。そして、新しい違反を防ぐようにするのじゃ。

roboko
ロボ子

Code Analysisのルールには、どんなものがあるんですか?

hakase
博士

デザイン、グローバリゼーション、相互運用性、保守性、移植性、命名、パフォーマンス、信頼性、セキュリティ、使用法に関する警告が含まれているぞ。盛りだくさんじゃな。

roboko
ロボ子

そんなにたくさん!

hakase
博士

ルールセットは、Visual StudioのGUIエディタで編集できるから安心じゃ。記事にも「ルールセットは、Visual Studio の GUI エディタで編集できる」って書いてある。

roboko
ロボ子

GUIエディタで編集できるのは便利ですね。

hakase
博士

そうじゃろ? これでロボ子のコードも完璧になること間違いなしじゃ!

roboko
ロボ子

ありがとうございます、博士。頑張ります!

hakase
博士

ところでロボ子、文字列比較で一番大事なことってなんだと思う?

roboko
ロボ子

えーと…、正しい結果を得ること、でしょうか?

hakase
博士

ブー! 正解は…、間違えないこと!

roboko
ロボ子

…博士、それ、ただの言葉遊びですよね?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search