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

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

19
#regionsはアンチパターンまたはコードの匂いですか?
C#では、#region/ #endregionキーワードを使用して、エディターでコードの領域を折りたたみ可能にすることができます。これを行うたびに、おそらく他のクラスやメソッドにリファクタリングされる可能性のある大きなコードの塊を隠すためにそれを行います。たとえば、管理しやすくするために、3つまたは4つの領域を持つ500行のコードを含むメソッドを見てきました。 地域の賢明な使用は問題の兆候でしょうか?私にはそう思われます。
265 c#  code-smell 

9
多くの例外メッセージに有用な詳細が含まれていないのはなぜですか?
例外メッセージが有用な詳細を含むべきであるという合意のある量があるようです。 システムコンポーネントからの多くの一般的な例外に有用な詳細が含まれていないのはなぜですか? いくつかの例: .NETのListインデックスアクセスがArgumentOutOfRangeExceptionないではない私にしようと、無効でした指標値を教え、またそれは私の許容範囲を教えてくれありません。 基本的に、MSVC C ++標準ライブラリからのすべての例外メッセージはまったく役に立たない(上記と同じように)。 .NETのOracleの例外。「言い換えると」「テーブルまたはビューが見つかりません」と表示されますが、どちらも表示されません。 したがって、私には、ほとんどの場合、例外メッセージには有用な詳細が含まれていないようです。私の期待はずれていますか?私はこれに気付くような間違った例外を使用していますか?または、私の印象が間違っているかもしれません:例外の大部分は実際に有用な詳細を提供しますか?
220 c#  c++  exceptions 

5
いつクラスの代わりに構造体を使用しますか?[閉まっている]
構造体とクラスを使用する場合の経験則は何ですか?私はそれらの用語のC#定義を考えていますが、あなたの言語が同様の概念を持っているなら、あなたの意見も聞きたいです。 私はほとんどすべてにクラスを使用する傾向があり、構造が非常に単純化されており、PhoneNumberなどのような値型でなければならない場合にのみ構造体を使用します。しかし、これは比較的マイナーな使用のように思われ、より興味深いユースケースがあることを願っています。
174 c#  design  class  struct 

6
固い原則とコード構造
最近の就職の面接で、私はSOLIDについての質問に答えることができませんでした-さまざまな原則の基本的な意味を提供する以外に。本当にバグです。数日かけて掘り下げましたが、まだ十分な要約を出していません。 インタビューの質問は: SOLIDの原則に厳密に従っていると言った.Netプロジェクトを見るとしたら、プロジェクトとコード構造の観点から何を期待しますか? 私は少しもがいて、質問に本当に答えなかったので、爆撃されました。 この質問をどのようにうまく処理できますか?
150 c#  .net  solid 

8
プロジェクトをどのように整理しますか?[閉まっている]
プロジェクトを整理する特定のスタイルはありますか? たとえば、現在ボリビアのいくつかの学校でプロジェクトを作成していますが、これが私がそれを整理した方法です。 TutoMentor (Solution) TutoMentor.UI (Winforms project) TutoMentor.Data (Class library project) プロジェクトをどのように整理しますか?あなたが組織し、誇りに思っているものの例はありますか?ソリューションペインのスクリーンショットを共有できますか? 私のアプリケーションのUI領域では、さまざまなフォームとそれらが属する場所を整理するための適切なスキーマを決定するのに苦労しています。 編集: .UIプロジェクトでさまざまなフォームを整理するのはどうですか?どこで/どのように異なるフォームをグループ化する必要がありますか?それらをすべてプロジェクトのルートレベルに配置するのは悪い考えです。

7
C#、. NET、ASP、ASP.NETなどの関係[終了]
C#、C#.NET、およびASPと他の '.NET'言語の同じものの違いについては、本当にわかりません。 私が理解していることから、.NETは...もののライブラリ/フレームワークです。フォーム要素などのWindowsデータに本質的にアクセスしていると思いますが、ASP.NETには適用されないようです。 さらに、「。NET」開発者と呼ばれている人もいます。これは、C#、ASP、および他の言語に堪能であることを意味しますか? 最後に、.NETが添付されていないC#は表示されません。C#は、それなしでは使用できないという点で.NETと密接に結びついていますか? 要約すると、.NETは正確に何を提供しますか?C#やASPなどとどのように関係していますか?「.NET開発者」とはどういう意味ですか?そして最後に、なぜ.NETなしでC#が表示されないのですか? [余談ですが、これらは複数の質問であることに気づきましたが、それらは非常に相互に関連していると思います(または少なくとも、プログラマやSOの閲覧が私に与えた印象です)。
143 c#  .net  asp.net 

16
将来必要になる可能性がある場合に備えて、冗長コードを追加する必要がありますか?
正しくも間違って、私は現在、コードを可能な限り堅牢にするように常に努めるべきだと考えています。これは、今は役に立たないことがわかっている冗長コード/チェックを追加することを意味しますが、 x数年後かもしれません。 たとえば、私は現在、次のコードを含むモバイルアプリケーションに取り組んでいます。 public static CalendarRow AssignAppointmentToRow(Appointment app, List<CalendarRow> rows) { //1. Is rows equal to null? - This will be the case if this is the first appointment. if (rows == null) { rows = new List<CalendarRow> (); } //2. Is rows empty? - This will be the case …

3
構造化ロギングと基本ロギングの利点
新しいアプリを作成しています。構造化されたログを含めたいと思います。私の理想的なセットアップはSerilog、C#コードとBunyanJSのようなものです。これらはfluentd、いろいろなものに食い込んでから出て行くことができると、最初は考えていましたelasticsearch + kibana。MySQLデータベースはすでにあるので、短期的にはSerilog + Bunyanのセットアップと開発者がそれを使用することに興味があり、もう少し時間をかけてfluentdと残りを取り込む間にMySQLにログインできます。 :しかし、私たちの経験豊富なプログラマーの一つは、単にような何かを好むlog.debug("Disk quota {0} exceeded by user {1}", quota, user);使用log4netして、同じようにMySQLのに対してSELECT文を実行します:SELECT text FROM logs WHERE text LIKE "Disk quota"; そうは言っても、どのアプローチがより良いか、ロギングシステムのタイプを選択する際にどのようなことを考慮する必要がありますか?
110 c#  javascript  mysql  logging 

10
C#で「静的」を使用しないでください
コードレビューのために、他のアーキテクトに書いた申請書を提出しました。そのうちの1人はすぐに返事を書き、「「静的」を使用しないでください。静的クラスと静的メソッドを使用して自動テストを作成することはできません。「静的」は避ける必要があります。」 チェックして、クラスの1/4が完全に「静的」とマークされています。クラスはコード全体で使用される単一のグローバルクラスであるため、クラスのインスタンスを作成しない場合は静的を使用します。 彼は、静的コードでは使用できないモック、IOC / DIテクニックを含むものについて言及し続けました。彼は、サードパーティのライブラリがテスト不能であるために静的である場合、それは残念だと言います。 この他の建築家は正しいですか? 更新:ここに例があります: APIManager-このクラスは、次に許可される時間とともに呼び出しているサードパーティAPIの辞書を保持します。多くのサードパーティが利用規約で持っているAPIの使用制限を強制します。Thread.Sleep(APIManager.GetWait( "ProviderXYZ"))を呼び出して、サードパーティサービスを呼び出す場所で使用します。電話をかける前に。ここにあるものはすべてスレッドセーフであり、C#のTPLでうまく機能します。

5
C#でのasync / awaitの使用のガイドラインは、優れたアーキテクチャと抽象化レイヤーの概念と矛盾していませんか?
この質問はC#言語に関するものですが、JavaやTypeScriptなどの他の言語をカバーするものと期待しています。 Microsoft は、.NETで非同期呼び出しを使用する場合のベストプラクティスを推奨しています。これらの推奨事項のうち、2つを選択しましょう。 TaskまたはTask <>を返すように非同期メソッドのシグネチャを変更します(TypeScriptでは、Promise <>になります) 非同期メソッドの名前をxxxAsync()で終わるように変更します 現在、低レベルの同期コンポーネントを非同期コンポーネントに置き換えると、これはアプリケーションのフルスタックに影響します。async / awaitは「最後まで」使用した場合にのみプラスの影響を与えるため、アプリケーション内のすべてのレイヤーのシグネチャとメソッド名を変更する必要があることを意味します。 優れたアーキテクチャでは、各レイヤーの間に抽象化を配置することが多く、低レベルのコンポーネントを他のコンポーネントに置き換えることは、上位レベルのコンポーネントには見えません。C#では、抽象化はインターフェイスの形式を取ります。新しい低レベルの非同期コンポーネントを導入する場合、コールスタック内の各インターフェイスを変更するか、新しいインターフェイスに置き換える必要があります。実装クラスで問題が解決される方法(非同期または同期)は、呼び出し元には隠されません(抽象化されません)。呼び出し元は、同期か非同期かを知る必要があります。 「良いアーキテクチャ」の原則と矛盾するベストプラクティスを非同期/待機しませんか? 非同期依存関係に切り替えるときにスタック内で置き換えることができるように、各インターフェイス(IEnumerable、IDataAccessLayerなど)が非同期の対応物(IAsyncEnumerable、IAsyncDataAccessLayer)を必要とするということですか? 問題をもう少し進めると、すべてのメソッドが非同期(Task <>またはPromise <>を返す)であると仮定し、メソッドが実際に非同期呼び出しを同期しないようにする方が簡単ではないでしょうか非同期?これは将来のプログラミング言語から期待されるものですか?
103 c#  architecture  async 

14
簡潔さがもはや美徳ではなくなったのはどの時点ですか?
最近のバグ修正では、他のチームメンバーによって記述されたコードを調べる必要がありましたが、そこで見つけました(C#です)。 return (decimal)CostIn > 0 && CostOut > 0 ? (((decimal)CostOut - (decimal)CostIn) / (decimal)CostOut) * 100 : 0; さて、これらすべてのキャストに正当な理由があるので、これを理解するのは非常に難しいようです。計算に小さなバグがあり、問題を解決するためにそれを解く必要がありました。 私はこの人のコーディングスタイルをコードレビューから知っていますが、彼のアプローチは、短い方が常に良いということです。そしてもちろん、そこには価値があります。私たちはすべて、適切に配置されたいくつかの演算子で整理できる条件ロジックの不必要に複雑なチェーンを見てきました。しかし、彼は明らかに、私よりも単一のステートメントに詰め込まれた一連の演算子に精通しています。 もちろん、これは最終的にはスタイルの問題です。しかし、コードを簡潔にするための努力が役に立たなくなり、理解の障壁となる点を認識することに関して何か書いたり、研究したりしましたか? キャストの理由はEntity Frameworkです。データベースはこれらをnull許容型として保存する必要があります。小数?C#のDecimalとは異なり、キャストする必要があります。

3
データベース接続の作成-クエリは1回ですか、それともクエリごとですか?
現時点では、Webページが最初にロードされるときにデータベース接続を作成します。次に、ページを処理し、その接続に対してクエリを実行します。これが最善の方法ですか、クエリを実行するたびにデータベース接続を作成する必要がありますか? ps 1つの接続を作成して使用する方が理にかなっていますが、これが他の問題を引き起こす可能性があるかどうかはわかりません。 MSSQLでC#(ASP.NET)を使用しています。
101 c#  database  sql-server 

8
最新のC ++はC#に取って代わりますか?Microsoftは開発者にC ++の採用を促していますか?[閉まっている]
最近のC ++の人気と、C#または他のCライクな言語からC ++への移行についての話を聞きます。 私はC ++ 11の機能について知っていますが、特にC#からC ++に移行した開発者からのあなたの経験を聞きたいです。 さらに重要なこととして、Microsoftは開発者にC ++の使用を促していますか?はいの場合、なぜですか?
91 c#  c++ 

16
若い人はポインターの概念を学ぶ必要がありますか?
CマスターのDennis RitchieがCにポインターを導入したのはなぜですか?そして、なぜVB.NETやJavaやC#などの他のプログラミング言語がそれらを排除したのですか?Googleでいくつかのポイントを見つけました。あなたのコメントも聞きたいです。なぜ現代の言語でポインターの概念を排除するのですか? Cは基本的な言語であり、ポインターはCを強力で際立ったものにし、Cをより現代的な言語と競争させる概念であると人々は言います。それから、なぜ彼らはより近代的な言語のポインターを排除したのですか? 新しいプログラマーにとって、ポインターの知識はまだ重要だと思いますか?最近人々はVB.NETまたはJavaを使用していますが、これはCよりも高度な機能をサポートしており(ポインターの概念を使用していません)、現在見ている多くの人々(私の友人)は、高度な機能をサポートするためCを無視してこれらの言語を選択します。Cから始めるように伝えます。Cでは不可能なVB.NETまたはJavaの高度なことをしているときに、ポインターの概念を学ぶのは無駄だと言います。 どう思いますか? 更新: Googleで読んだコメントは次のとおりです。 初期のコンピューターは遅すぎて最適化されていませんでした。 ポインターを使用すると、アドレスに直接アクセスできるようになり、関数呼び出しでアドレスのコピーを作成する代わりに時間を節約できます。 ポインターを使用するとセキュリティが著しく低下するため、JavaとC#にはポインターが含まれていません。 これらと、さらに私が見つけたもの。私はまだいくつかの貴重な答えが必要です。それは大歓迎です。

13
ソースコードにSQLを書くことはアンチパターンと見なされますか?
SQLを次のようなアプリケーションにハードコードするアン​​チパターンと見なされますか? public List<int> getPersonIDs() { List<int> listPersonIDs = new List<int>(); using (SqlConnection connection = new SqlConnection( ConfigurationManager.ConnectionStrings["Connection"].ConnectionString)) using (SqlCommand command = new SqlCommand()) { command.CommandText = "select id from Person"; command.Connection = connection; connection.Open(); SqlDataReader datareader = command.ExecuteReader(); while (datareader.Read()) { listPersonIDs.Add(Convert.ToInt32(datareader["ID"])); } } return listPersonIDs; } 通常、リポジトリレイヤーなどがありますが、簡単にするために上記のコードでは除外しています。 私は最近、SQLがソースコードで書かれていると不満を言う同僚からいくつかのフィードバックを得ました。理由を尋ねる機会がなかったので、彼は現在2週間(多分それ以上)離れています。私は彼が次のいずれかを意味したと思います: LINQ …
87 c#  sql 

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