13

私は、c#コーディング規則と命名ガイドライン( C#コーディング規則命名ガイドライン)、および数か月前からのスタックオーバーフローに関する同様の質問に対処するいくつかのmsdn記事を調べました。

[概念的に]同じデータを異なるタイプで保持する、スコープ内にある2つの変数を同時に処理する方法がわかりません。

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

私は3つの可能な行動方針を考え出しました、そして私はもっともらしい選択肢を逃したと確信しています。

COA#1:

int iRecordId;
string sRecordId;

変数の一方または両方が型の省略形の前に付く場合。これは、パラメータ名の前にハンガリー語の型表記を付けないというMSコーディングガイドラインに違反しています。

COA#2:

int recordId;
string recordIdString;

変数の一方または両方が名前のタイプを明示的に示している場合。これは不格好なようで、ハンガリアン記法を使用していませんが、以前のCOAの精神に違反しているようです。

COA#3:

int recordIdForDatabase;
string recordIdFromUrl;

各変数は、データがどこから来たのか、どこに行くのかによってさらに修飾されます。

提案

私の考えでは、最終的には型によってのみ異なる2つの変数を区別したいので、変数に型情報を接頭辞として付けないことを明示的に示すガイドラインがありますが、私はハンガリー語の接頭辞を使用することに傾倒しています。コードの残りの部分の命名規則とはまったく対照的であるため、酌量すべき状況を浮き彫りにするようです。これは合理的なアプローチですか?

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

4

3 に答える 3

9

最初のオプションは、Hunharian Notationを使用しなくなったため、廃止されました。

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

しかし、最後のオプションは、タイプの違いではなく、2つの変数間のセマンティックな違いを示すため、私の観点からは好ましいです。

于 2012-12-03T19:12:11.040 に答える
3

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

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

変数がそれぞれ異なる値を格納する場合は、論理的に名前を付けます。例えば、

int socialSecurityID;
string driversLicenceID;
于 2012-12-03T19:22:41.767 に答える
2

それは完全に大丈夫です。プライベートスコープでこのようなものを使用するには:

int recordId;
string recordIdString;

ただし、これらのIDがインターフェースの一部である場合は、別のクラス設計を検討してください。URL IDをUrlを表すクラスに移動すると、ほとんどの場合、アーキテクチャが改善されます。

于 2012-12-03T19:35:10.303 に答える