2012-12-03 7 views
9

C#のコード規則と命名ガイドライン(C# Coding ConventionsNaming Guidelines)に対応するいくつかのmsdn記事と、数ヶ月後のスタックオーバーフローに関するsimilar questionを参照しました。同じデータだが異なる種類の変数の命名規則

[概念的には同じ]異なる種類のデータを保持する2つの変数を同時に処理する方法はわかりません。

この問題の説明に役立つ例は、最初は文字列として保持されますが、その後は整数にキャスト/解析される識別子です。

私は3つの可能な行動コースを考え出しました。私は確かな選択肢がないと確信しています。

COA#1:変数の一方または両方が、タイプの略語の接頭辞

int iRecordId; 
string sRecordId; 

。これは、ハンガリー語の表記法でパラメータ名の前に接頭辞を付けないことを示すMSコーディングガイドラインに違反します。

COA#2:変数の一方または両方が明示的に名前を入力を述べる

int recordId; 
string recordIdString; 

。これはちょうどklunkyと思われ、ハンガリー表記を使用しない間は、以前のCOAの精神に違反しているようです。

COA#3:各変数は、データがどこから来た、または起こっている場所によって修飾遠い

int recordIdForDatabase; 
string recordIdFromUrl; 

提案

私の考えは、私が最終的には、明示的に型情報を持つ変数の接頭辞ない状態なガイドラインがありますが、私が傾いてるだけなので、種類によって異なる2つの変数を区別したいということですハンガリーの接頭辞を使用します。それはコードの残りの命名規則とははっきりとは対照的であるので、それは崇拝的な状況を強調するであろうと思われる。これは合理的なアプローチですか?

怒りの質問、コメント、叫びはすべて歓迎されます。

答えて

6

私たちがハンガリー記法を使用していないため、最初のオプションは廃止されました。

2番目のオプションは悪くないですし、私は別のプロジェクトでその使用法を見ました。

しかし、最後のオプションは、タイプの違いではなく2つの変数の間に意味的な違いがあるため、私の観点からは好ましいです。

2

なぜデータを2回保存するのですか?レコードIDをintに入れて、それを変換したいときにToString()を呼び出すことができますか?

データを1回だけ保存するだけで、コードのエラーの影響を受けにくくなります。

変数に異なる値が格納されている場合は、論理的に名前を付けます。例:

int socialSecurityID; 
string driversLicenceID; 
+1

ええ、私はただ書いたものを読んだだけです。それでもtrueを保持する必要があります。ストアするのはint _or_文字列だけで、両方をストアすることはできません。その後、必要に応じて変換します。 ToString()は失敗するため、Int32.Parse()は簡単に失敗する可能性があるため、int値を保持します。 –

2

完全に問題ありません。

しかし、これらのIDがインターフェイスの一部である場合は、異なるクラスデザインを検討してください。 url idをURLを表すクラスに移動すると、ほとんどの場合、より良いアーキテクチャにつながります。