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

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

3
オブジェクト指向で渡すメッセージとは何ですか?
私は、主にC ++、C#、およびJavaでオブジェクト指向プログラミングを研究しています。カプセル化、継承、およびポリモーフィズムの理解(およびこのサイトで多くの質問を読むこと)で、それを十分に把握していると思いました。 ここにポップアップ表示されるように思われることの1つは、「メッセージパッシング」の概念です。どうやら、これは今日の主流言語でのオブジェクト指向プログラミングでは使用されていないが、Smalltalkでサポートされているものです。 私の質問は: メッセージパッシングとは何ですか?(誰かが実用的な例を挙げることができますか?) C ++、C#、またはJavaでこの「メッセージパッシング」をサポートしていますか?
35 java  c#  c++  object-oriented 


2
ASP.NET MVCでのデータアクセスの分離
私は、MVCでの最初の本当のクラックで、業界標準とベストプラクティスに従っていることを確認したいと思います。この場合、C#を使用したASP.NET MVCです。 モデルにEntity Framework 4.1を使用し、コードファーストオブジェクト(データベースが既に存在する)を使用するため、データベースからデータを取得するためのDBContextオブジェクトが存在します。 asp.net Webサイトで行ったデモでは、コントローラーにデータアクセスコードが含まれています。これは、特にDRY(自分自身を繰り返さないでください)プラクティスに従う場合、私には正しくないようです。 たとえば、公共図書館で使用するWebアプリケーションを作成しており、カタログ内の書籍を作成、更新、削除するためのコントローラーがあるとします。 アクションのいくつかはISBNを取得し、「Book」オブジェクトを返す必要がある場合があります(これはおそらく100%有効なコードではないことに注意してください)。 public class BookController : Controller { LibraryDBContext _db = new LibraryDBContext(); public ActionResult Details(String ISBNtoGet) { Book currentBook = _db.Books.Single(b => b.ISBN == ISBNtoGet); return View(currentBook); } public ActionResult Edit(String ISBNtoGet) { Book currentBook = _db.Books.Single(b => b.ISBN == ISBNtoGet); return …

6
変数データ型を明示的に定義するか、キーワード「var」を使用しますか?[閉まっている]
C#では、すべての変数宣言に汎用のvarキーワードを使用することをお勧めしますか?はいの場合、次のステートメントの10進数のMなど、変数宣言内のリテラル値にこれらの特殊文字を記載する必要がありますか? var myDecimal = 14.5M; それが違いを生むなら、私はC#でWeb開発をしようとしています。

2
命名規則DAL、BAL、およびUIレイヤー[非公開]
次のレイヤーを持つ典型的なWebアプリケーションを開発しています UIレイヤー(MVC) ビジネスロジックレイヤー(BAL) データアクセス層(DAL) 各レイヤーには、BALおよびDALを含む独自のDTOオブジェクトがあります。これに関する私の質問は次のとおりです DALによって返されるDTOは、BAL内の対応するDTOに変換され、UIレイヤーに送信されるだけです。場合によっては、DTOオブジェクトの属性と構造の両方が同じです。このようなシナリオでは、中間オブジェクトを含めずに、DALのDTOをUIレイヤーに単純に返すことをお勧めします。 これらのDTOオブジェクトと各レイヤーの他のオブジェクトに名前を付ける最良の方法は何ですか。DTOName、ServiceNameなどのプレフィックスを使用する必要がありますか?プレフィックスを使用するように求めている理由は、ソリューションのクラスがフレームワークの他のクラスと競合していない場合、プレフィックスが各クラスがどこに属しているかを理解しやすいためです?
35 c#  design  naming 


5
同じクラス内の他のメソッドを呼び出すメソッドを単体テストする最良の方法
私は最近、同じクラス内のメソッドから同じクラス内のメソッドへの結果または呼び出しをスタブするのに最適な次の2つのメソッドを友人と話していました。 これは非常に単純化された例です。実際には、機能ははるかに複雑です。 例: public class MyClass { public bool FunctionA() { return FunctionB() % 2 == 0; } protected int FunctionB() { return new Random().Next(); } } これをテストするために、2つのメソッドがあります。 方法1:関数とアクションを使用して、メソッドの機能を置き換えます。例: public class MyClass { public Func<int> FunctionB { get; set; } public MyClass() { FunctionB = FunctionBImpl; } public bool FunctionA() …

1
DRYに関係なく、ほぼ同一のコード
ほぼ同一のコードがいくつかありますが、メイン変数ではまったく異なる型を使用し、それらの間には継承はありません。具体的には、C#およびVB.NET用のRoslynを使用して、次のタイプのアナライザーを作成しています。 Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax コードは同じことをしているので、できるだけDRYのままにして、できるだけ別々の(ただしタイプ以外は同じ)メソッドに分割するか、2つのメソッドが完全に分離するのかどうか疑問に思っています関連しておらず、将来の変更が一方のバージョンの変更を強制する可能性がありますが、もう一方のバージョンは変更しない可能性はありますか? 編集: 1年ほど後、私はこの同じ問題にぶつかり、Roslynチームが解決に協力しました。ジェネリックを取り、TAttributeSyntaxほとんどの作業を行うパラメーターを持つ基本クラスを作成します。次に、特定の型を必要とする最小限のデータで派生クラスを作成します。
34 c#  design  dry 

3
通常、Java開発にはC#/。NETよりも多くのサブクラスが含まれますか?
最近、Androidの開発を検討し始めました。これにより、私はJavaソフトウェア開発の世界に戻ってきました。私が最後にJavaで作業したときは、OOPを(私が思うに)今ほど理解していないことを認めます。 私のキャリアでは主にC#を使用していましたが、継承がJavaとC#を使用する方法に驚くべき違いがあることに気付きました。 C#では、ほとんどの状況で継承を回避できるように思われました。通常、当面のタスクは、.NETフレームワークの具体的なクラスを使用して実現できます。 Javaでは、コードサンプルから収集したものから、Javaフレームワークは多くのインターフェイスまたは抽象クラスを提供し、開発者が実装/拡張することを意図しているようです。 これは、スタイルにまで煮詰めるには大きすぎる違いのようです。この背後にある理由は何ですか?これを理解するまで、きれいなJavaコードを書くことはできないと思います。 また、これはAndroid SDKだけに限定されていますか?これはOOPに対するJava全体のアプローチですか? または別の言い方をすれば、 これら2つの言語の設計について、他の言語よりも多かれ少なかれ継承を使用しているように思われますか? 言語が継承を同一に扱い、私の観察が有効であると仮定すると、これは言語ではなくフレームワーク/ライブラリの設計に関連することを意味します。この種のデザインの動機は何でしょうか?

9
C#でのコンストラクターパラメーターの検証-ベストプラクティス
コンストラクターパラメーターの検証のベストプラクティスは何ですか? 単純なC#を想定します。 public class MyClass { public MyClass(string text) { if (String.IsNullOrEmpty(text)) throw new ArgumentException("Text cannot be empty"); // continue with normal construction } } 例外をスローすることは受け入れられますか? 私が遭遇した代替案は、インスタンス化する前の事前検証でした: public class CallingClass { public MyClass MakeMyClass(string text) { if (String.IsNullOrEmpty(text)) { MessageBox.Show("Text cannot be empty"); return null; } else { return new …

11
Java vs. C#-生産性の観点[終了]
Javaでの長年の経験とC#および.NETでの長年の経験がある場合、これら2つの環境間のソフトウェア開発の生産性の違いについての意見を評価します。顧客の1人が、既存のソフトウェアソリューションの置き換えを検討しています。交換には約が必要です。10〜15人年の作業、Javaまたは.NETの選択は、それらの間の生産性の違いに基づいて、必要な投資と市場投入までの時間に大きく影響する可能性があります。 JavaとC#/。NETのソフトウェア開発の生産性の違いを示す情報を提供していただけますか?次のように回答を受け取りたいと思います。 私の経験は、JavaでのX年の経験とC#/。NETでのX年の経験に基づいています。次のことを考慮すると、JavaはC#.NETまたはC#/。NETよりもX%生産的です。

3
ASP.NET MVCでコントローラーを単体テストすることで実際の価値はありますか?
この質問がしばらくの間私を悩ませていたので、この質問がいくつかの興味深い答えを与えることを願っています。 ASP.NET MVCでコントローラーを単体テストすることで実際の価値はありますか? それが意味することは、ほとんどの場合(そして私は天才ではありません)、私のコントローラーメソッドは、そのような最も複雑なものであってもです: public ActionResult Create(MyModel model) { // start error list var errors = new List<string>(); // check model state based on data annotations if(ModelState.IsValid) { // call a service method if(this._myService.CreateNew(model, Request.UserHostAddress, ref errors)) { // all is well, data is saved, // so tell the user …

6
「究極のシャッフル」アルゴリズムを作成して、mp3コレクションを並べ替えたい
私は、タイトルとアーティストの重複を避ける方法でmp3ファイルをソートするための擬似コードの提案を探しています。私はクルーナーに耳を傾けます-フランク・シナトラ、トニー・ベネット、エラ・フィッツジェラルドなど、古い基準を歌います。各アーティストは、同じ曲を多数録音します-フライミートゥザムーン、ザウェイユールックトゥナイト、スターダストなど。2000曲あり、20曲がEllaのものである場合、100曲ごとに1回だけ聞きたいです。10人のアーティストがFly Me To The Moonを歌うなら、200曲に1回聴きたいです。もちろん、これら2つの要件を組み合わせて、「究極のシャッフル」を作成します。 これはかなり広範にわたる未解決の質問です。まだプログラミングを始めていませんので、良いアプローチの提案を探しています。実際には、他の曲の属性を均等に配置することに関して他のいくつかの要件がありますが、ここではそれに入りません。 出発点として、ここで見つけたコードを変更して、mp3ファイルを操作し、ID3タグを読み取ります。 以下のparsifalの回答を使用して、私のニーズを満たす小さなアプリを作成しました。ここにフォローアップの質問も書きました。素晴らしい反応をありがとう!

8
ソリッド、貧血ドメインの回避、依存性注入?
これはプログラミング言語にとらわれない質問かもしれませんが、.NETエコシステムを対象とした回答に興味があります。 これがシナリオです:行政用のシンプルなコンソールアプリケーションを開発する必要があるとします。アプリケーションは、車両税に関するものです。これらの(のみ)次のビジネスルールがあります。 1.a)車両が自動車で、所有者が最後に税金を支払ったのが30日前であれば、所有者は再度支払う必要があります。 1.b)車両がバイクで、所有者が最後に税金を支払ったのが60日前であれば、所有者は再度支払う必要があります。 つまり、車がある場合は30日ごとに支払う必要があり、バイクがある場合は60日ごとに支払う必要があります。 システム内の各車両について、アプリケーションはそれらのルールをテストし、それらを満たさない車両(プレート番号と所有者情報)を印刷する必要があります。 私が欲しいのは: 2.a)SOLID原則(特にオープン/クローズド原則)に準拠します。 私が欲しくないのは(私が思うに): 2.b)貧弱なドメイン。したがって、ビジネスロジックはビジネスエンティティ内に配置する必要があります。 私はこれから始めました: public class Person // You wanted a banana but what you got was a gorilla holding the banana and the entire jungle. { public string Name { get; set; } public string Surname { get; set; } } public …
33 c#  .net  design  architecture 

4
Web ApiにWSDLタイプのサポートがないのはなぜですか?
したがって、私は.Net WebApiを使い始めたばかりで、すぐに気づいたことの1つは、APIの外観と消費方法(各アクションからのリクエスト/レスポンス)を定義する契約がないことです。これは通常の形式ですWCF / SoapのWSDL。 これは非常に価値があり、APIの利用者の生活をずっと楽にするものであるように思えます。 存在しない理由はありますか?知らないプログラミングのパラダイムや原則はありますか?作成する方法はありますか?

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