タグ付けされた質問 「c#」

C#は、Microsoftが.NETプラットフォームと並行して作成した、マルチパラダイムで管理されたガベージコレクションのオブジェクト指向プログラミング言語です。

4
TDDを簡単に実行できるようにゼロから設計された新しい言語はどのように見えますか
いくつかの最も一般的な言語(Java、C#、Javaなど)では、コードを完全にTDDしたいときに、その言語と対立しているように見えることがあります。 たとえば、JavaとC#では、クラスの依存関係をモックする必要があり、ほとんどのモックフレームワークでは、クラスではなくインターフェイスをモックすることをお勧めします。これは、多くの場合、単一の実装で多くのインターフェースがあることを意味します(この影響は、TDDにより多数の小さいクラスを作成するよう強制されるため、さらに顕著になります)。具象クラスを適切にモックできるようにするソリューションは、コンパイラーを変更したり、クラスローダーをオーバーライドしたりするなど、かなり厄介です。 それで、TDDに最適になるようにゼロから設計された言語はどのようになりますか?(インターフェイスをコンストラクタに渡すのではなく)依存関係を記述する何らかの言語レベルの方法で、明示的に行うことなくクラスのインターフェイスを分離できるのでしょうか?

4
インターフェースまたはクラスを返す
メソッドがあるとしましょう public List<User> GetBatchOfUsers(IEnumerable<int> userIDs) { List<User> users = new List<User>(); // some database stuff return users; } を返すのではなく、インターフェイス(IListまたはのいずれかIEnumerable)を返す方がよいことを読みましたList。私がそうすることについて聞いたいくつかの議論は、それがデータを隠すことであり、API開発者に後日データの内部表現を変更する柔軟性を与えます。 を返すだけの私の懸念IEnumerableは、ランダムアクセスやCountプロパティなどの機能を失うことです。 IEnumerableメソッドとして動作するための最小限の要件である、メソッドにデータを送信するための最高の柔軟性を消費者に与えるため、パラメーターとしてを受け入れることには意味があることを知っています。 戻り値型のベストプラクティスは何ですか?
9 c#  interfaces  class 

4
外部EXEを開始するクラスのユニットテストの記述
EXEのリストを開始するために使用するC#クラスを作成しました(私のものではありません-実行する必要のあるサードパーティのEXE)。 。 追加、削除などの基本的なロジックをテストできます。EXEを保持する実際の作業が機能することを単体テストするにはどうすればよいですか? 私の最初の考えは、1秒後に自分自身を閉じるダミーEXEを起動し、それを使用してテストすることです。それは単体テストの領域外ですか?

8
C#foreachの改善?
foreach内にループカウントインデックスを設定し、整数を作成し、それを使用し、インクリメントする必要がある場合、プログラミング中にこれに頻繁に出くわします。 foreach内のループ数?他のループでも使用できます。 これは、コンパイラーがこのキーワードをループ構造内以外のどこで使用することをどのように許可しないかというキーワードの使用に反しますか?
9 c#  loops 

2
これは厄介な間隔のあるタイプのスタイルですか?
他のプログラマーのコードを読む際、彼は私が見たことのないフォーマットを使用しています。例えば namespace MyNs.HereWeAre {//tab here for some reason public class SomeClass {//here's another tab public string Method() {//yet another tab string _variable = "";//no tab implementation return _variable; } }//eof - class (Yes these eof comments are on every file) }//eof - namespace // eof - file 私は認めます...このコードは私を怒らせます。このスタイルを実現することは困難です。IDEのビジュアルスタジオが提供するデフォルトのフォーマットと戦う必要があります。 このスタイルには正当な理由があることを知っていれば、この錠剤をもう少し簡単に飲み込むことができます。このスタイルは他のプログラミング言語/ IDEに由来していますか?

3
.NETモジュールがモジュールファイル名を名前空間から分離するのはなぜですか?
Schemeプログラミング言語(R6RS標準)の実装では、次のようにモジュールをインポートできます。 (import (abc def xyz)) システムは、ファイルを検索しようとするあなたのスキームモジュールを維持するいくつかのディレクトリです。モジュールのソースコードであり、必要に応じてオンザフライでコンパイルされます。$DIR/abc/def/xyz.sls$DIRxyz.sls Ruby、Python、およびPerlモジュールシステムは、この点で似ています。 一方、C#はもう少し複雑です。 まず、プロジェクトごとに参照する必要があるdllファイルがあります。それぞれを明示的に参照する必要があります。これは言うよりも複雑で、ディレクトリにdllファイルをドロップし、C#に名前でピックアップさせます。 次に、dllのファイル名と、dllによって提供される名前空間との間に1対1の名前の対応はありません。この柔軟性は高く評価できますが、手に負えなくなる可能性もあります。 これを具体的にするために、私がこれを言うときusing abc.def.xyz;、C#がC#がabc/def/xyz.dll参照することを知っている(プロジェクトごとに構成可能)ディレクトリでファイルを見つけようとするとよいでしょう。 Ruby、Python、Perl、Schemeのモジュール処理方法の方がエレガントだと思います。新興言語はより単純な設計で行く傾向があるようです。 .NET / C#の世界が、このようにして、間接レベルをさらに上げているのはなぜですか?

3
型コードをクラスで置き換える(リファクタリング[Fowler]から)
この戦略では、次のようなものを置き換える必要があります。 public class Politician { public const int Infidelity = 0; public const int Embezzlement = 1; public const int FlipFlopping = 2; public const int Murder = 3; public const int BabyKissing = 4; public int MostNotableGrievance { get; set; } } と: public class Politician { public MostNotableGrievance …
9 c#  refactoring 

1
TDDを使用して簡単な機能をコーディングするにはどうすればよいですか?
基本的にTDDの要点があります。私はそれが便利で、MSTESTフレームワークの適切なコマンドを持っていることを売りました。しかし、これまでのところ、これを主要な開発方法として使用するように卒業することはできませんでした。ほとんどの場合、コンソールアプリをテストドライバーとして書くための代理として使用します(私の従来のアプローチ)。 私にとって最も便利なのは、回帰テストの役割を吸収する方法です。 さまざまなテスト可能な動作を明確に分離するものはまだ何も構築していません。これは、私が知っている画像のもう1つの大きな部分です。 したがって、この質問は、次の開発タスクのために最初に何を書くかについてのポインタを尋ねることです。プロデューサ/コンシューマの方法でタスクの実行をカプセル化するコードを作成したいと思います。 このコードを書いた後、私は立ち止まり、この質問を書くことにしました(今回、実際にTDDを実際に使用できるかどうか疑問に思いました) コード: interface ITask { Guid TaskId { get; } bool IsComplete { get; } bool IsFailed { get; } bool IsRunning { get; } } interface ITaskContainer { Guid AddTask(ICommand action); } interface ICommand { string CommandName { get; } Dictionary<string, object> Parameters { get; …
9 c#  tdd 

7
LOC /日の比率が高すぎる場合、私は気にする必要がありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 私は現在インディープロジェクトに取り組んでいるので、人間によるテストや外部コードのレビュー全体を行う余裕はありません。しかし、現在のコードに難しいバグはありません(私が見ているように修正しています) 、そしてほとんどの場合、フィールド名などが間違っているため、1〜2分で修正することができます)。機能を実装した後、プッシュする前にテストします。最近、私のLOC番号は1日あたり約400でした(実際には、C#です)。新しいシステムを実装するだけでなく、既に記述した内容を書き換えて、いくつかのバグを修正しています。 気にする必要がありますか?これまでに作成したすべてのコードを停止して確認し、リファクタリングする必要があるという兆候ですか?
9 c#  refactoring 

2
自分のアプリケーションでExchange Serverの「RBAC AuthZ」を模倣しています…(同様のものはありますか?)
Exchange 2010には委任モデルがあり、winrmコマンドレットのグループは本質的に役割にグループ化され、役割はユーザーに割り当てられます。 (画像ソース) これは、適切な低レベルのテクノロジ(WCF、SOAPなど)を使用し、クライアント側に追加のソフトウェアを必要とせずに、PowerShellのすべての利点をどのように活用できるかを考慮した、優れた柔軟なモデルです。 (画像ソース) 質問 .NETアプリケーションでExchangeの委任モデルを活用する方法はありますか? このモデルを模倣しようとした人はいますか? 最初から始めなければならない場合、このアプローチを模倣するにはどうすればよいですか?

7
変数を含むstring.formatとインライン変数
使用する長所/短所(ある場合)は何ですか string output; int i = 10; output = string.Format("the int is {0}", i); 対 string output; int i = 10; output = "the int is " + i; 私は常に後者の例を使用してきましたが、オンラインチュートリアルの大部分がstring.formatの例を使用しているようです。効率に関して実際の違いはないと思います。私の最初の考えは、変数を挿入するためにコーダーが文字列を分割し続ける必要がないようにすることです。
9 c#  .net  vb.net  strings 

4
C#でMS SQL Serverからデータをクエリするためのベストプラクティス?
C#でMS SQL Serverからデータを照会する最良の方法は何ですか? コードにSQLクエリを含めることはお勧めしません。 ストアドプロシージャを作成し、パラメーターを使用してC#から呼び出すのに最適な方法は何ですか? using (var conn = new SqlConnection(connStr)) using (var command = new SqlCommand("StoredProc", conn) { CommandType = CommandType.StoredProcedure }) { conn.Open(); command.ExecuteNonQuery(); conn.Close(); }
9 c#  sql  sql-server 

5
C#でその演算子の短絡ORバリエーションと非短絡バリエーションの両方があるのはなぜですか?
定期的に、私はこれについて疑問に思います: 短絡ORは常に、短絡されていないOR演算子と同じ値を返しますか? ショートサーキットORは常により迅速に評価されると思います。では、一貫性を保つために、短絡されていないOR演算子がC#言語に含まれていたのでしょうか。 私は何を逃したのですか?
9 c#  boolean  logic 

3
ブラウザーで実行されるC#をコンパイルするためのLINQPadに類似した技術はありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 JSFiddleを考えてください。LINQPadは、同様のオプションを備えた高速C#に最適です。ブラウザで実行するLINQPadのようなものはありますか?
9 c# 

3
他の人のためにライブラリを作成するとき、ロギングをどのように処理すればよいですか?
すべて。社内の他のチームのためにいくつかのライブラリを作成しています。それらはすべて異なるロギングメカニズムを持っています。私のライブラリが行っていることのトレース情報を提供したいと思います。これを達成するにはどうすればよいですか?ありがとう
9 c#  logging 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.