ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

5
NInjectを使用して工場を建設する最良の方法は何ですか?
私は、MVC3でNInjectを使用した依存性注入にかなり満足しています。MVC3アプリケーションでの作業中に、私はNInjectを使用してカスタムコントローラー作成ファクトリを開発しました。そのため、作成されたコントローラーには、このコントローラーファクトリを介して依存関係が注入されます。 今、私はWindowsアプリケーションを開発し始めています、私はアプリケーション全体の依存性注入を使用したいと思います。つまり、ユニットテストを容易にするために、すべてのオブジェクトをNInjectを介して作成する必要があります。作成されたすべてのオブジェクトがNInject Factoryのみを通過するようにする必要があります。 たとえば、Button_Clickイベントで任意のWindowsフォームで次のように記述した場合: TestClass testClass = new TestClass() そしてTestClass、たとえば、上の任意の依存関係を持ってITest、それが自動的に解決されなければなりません。私が使用できることを知っています: Ikernel kernel = new StandardKenel() //AddBinding() TestClass testClass = kenel.get<TestClass>(); しかし、オブジェクトを作成するたびにこれを行うのは面倒です。また、開発者は特定の方法でオブジェクトを作成する必要があります。もっと良くできますか? オブジェクト作成用の中央リポジトリを作成すると、すべてのオブジェクト作成でそのリポジトリが自動的に使用されますか?

3
静的メソッドを持つ静的クラスはSOLIDと見なされますか?
SOLIDには、 「プログラム内のオブジェクトは、そのプログラムの正確性を変更することなく、サブタイプのインスタンスで置き換えられるべきである」という概念を持つLiskov置換原則が含まれています。 静的メソッド(Mathクラスに少し似ている)を持つ静的クラスにはインスタンスがまったくないため、静的メソッドを持つ静的クラスがある場合、システムはSOLIDと見なされますか?

5
オープンソースチームのメンバー間で、何の問題もなく寄付金を分配しますか?[閉まっている]
私はSourceForgeでホストされているオープンソースプロジェクトの開発者です。 それは小さなアプリとして始まり、いくつかのリリースの後、ますます人気が上がり、私からより多くの時間と責任を消費し始めました。そこで、SourceForgeで寄付オプションを有効にしました。 無料で開発を続けたいと思っていますが、もしお金が入ったら、どうやってチームと分割すべきですか? チームメンバーの数に均等に配分する必要がありますか?(現在は2人のチームであるため50-50) クラスの数、コミット、またはチームメンバーによるその他の貴重な提出。 他のアイデアは? そのような状況で何をしますか?ご意見をお聞かせください。 この質問が他の人にも役立つことを願っています。

7
慣用的なC ++の書き方を学ぶにはどうすればよいですか?
私はコンピューターサイエンスの学生であり、その結果、クラスのあるCのより良いバージョンとしてC ++を教えられました。複雑な問題の解決策が必要なときはいつでも車輪の再発明を試みようとしますが、その後しばらくして、何らかの言語機能または標準ライブラリルーチンがそれを可能にしてくれました。 私は自分char*と*(int*)(someVoidPointer)イディオムに満足していますが、最近、オープンソースプロジェクトに(わずかな)貢献をした後、C ++コードを書くときに考えるべきことではないと感じています。Cとは大きく異なります。 私がオブジェクト指向プログラミングをかなりよく知っていること、そして急な学習曲線で大丈夫であることを考えると、C ++をコーディングしているときにC ++トラックに心を向けるために何を提案しますか?
27 c++ 


4
再起動するたびに、ローカルの.NETサイトが初めてロードするのに時間がかかるのはなぜですか?[閉まっている]
.NETプラットフォームに基づいてサイトを開発しています。通常、これらのサイトをローカルIISに展開します。これにより、稼働する前にそれらをテストして機能を確認できます。ただし、Windowsを再起動するたびに、サイトの初回実行に時間がかかるようです。 私はJITについて知っていますが、この質問にも気づいていますが、私の質問には答えません。 JITは、ウィンドウを再起動するたびに発生しますか?w3wp.exeプロセスの作成に関連していますか?再起動後の最初のリクエストでサイトが非常に遅いのはなぜですか?
27 .net  asp.net  performance  iis  jit 


10
間違ったブランチで作業することをどのように回避しますか?
通常、問題を回避するには注意するだけで十分ですが、時々、ランダムのソース管理パスをチェックして、作業中のブランチを再確認する必要があります(例:「うーん... devブランチにいますか?」)ファイル。 もっと簡単な方法を探して、それに応じてソリューションファイルに名前を付けることを考えました(例 MySolution_Dev.sln)が、各ブランチで異なるファイル名を使用して、ソリューションファイルをマージすることはできません。 大したことではありませんが、正しいブランチにいることをすばやく確認するために使用する方法や「小さなトリック」はありますか?TFS 2008でVisual Studio 2010を使用しています。

8
プログラマーの給与を決定するためにどの基準を使用する必要がありますか?[閉まっている]
最近、私はプログラマーの給料を決定する際にどの基準を使用すべきかについての議論の一部になりました。などなど、Stack Exchangeブログでこのテーマに関する素晴らしい投稿を読んで、これに同意することはできませんでしたが、多くの雇用者は説明されたロジックに従っていません。 あなたの経験では、プログラマーの給与を決定するときに最も重要な要素はどれですか?これらの状況で最も頻繁に適用される基準はどれですか?どの基準が最も頻繁に適用されるべきですか?そして最後に、給与を決定する上で正式な教育(大学、大学)はどの程度重要ですか?

11
なぜ競合するファイルシステムの設計が非常に多いのですか?[閉まっている]
簡単な質問ですが、なぜ今日でも競合して使用されているファイルシステムが非常に多いのですか?(ntfs、fat32、ext3(ffs)など) ファイルシステムの設計者は、各タイプのシステムの最良の側面に同意し、「最良の」ファイルシステムを実装できるようです。これらのファイルシステムはしばらく前から存在しており、どのファイルシステムが他のファイルシステムよりも優れた品質を持っているかは少なくともある程度明らかであるはずです。

4
プロトタイプ継承は、従来の継承と実際にどのように異なりますか?
継承、ポリモーフィズム、およびカプセル化は、OOPの3つの最も明確で重要な機能であり、それらから、最近では継承に高い使用統計があります。私はJavaScriptを学んでいますが、ここでは彼らはすべてプロトタイプ継承を持っていると言い、どこでも人々はそれが古典的な継承とはまったく異なるものだと言います。 しかし、実際の使用の点との違いは理解できませんか?つまり、基本クラス(プロトタイプ)を定義し、そこからいくつかのサブクラスを派生させると、どちらも基本クラスの機能にアクセスでき、派生クラスの機能を拡張できます。私が言ったことを継承の意図した結果であると考える場合、プロトタイプバージョンとクラシックバージョンのどちらを使用しているのかを気にする必要があるのはなぜですか? さらに明確にするために、プロトタイプ継承と従来の継承の有用性と使用パターンに違いは見られません。その結果、両者が同じものであるOOADをもたらすため、それらが異なる理由を学ぶことに興味がありません。プロトタイプの継承は、実際には(理論的にではなく)古典的な継承とどの程度異なりますか?

9
メソッドで#regionタグに人々が強く反対しているのはなぜですか?
メソッドを短くすることについて多くのことを聞き、多くのプログラマーが、メソッド内で#regionタグを使用することは、それが長すぎて複数のメソッドにリファクタリングする必要があることの確かな兆候だと言うことを聞きました。ただし、メソッド内で#regionタグでコードを分離することが、複数のメソッドにリファクタリングするための優れたソリューションである多くの場合があるように思えます。 計算を3つの異なるフェーズに分割できるメソッドがあるとします。さらに、これらの各段階はこのメソッドの計算にのみ関係するため、新しいメソッドに抽出してもコードの再利用はできません。それでは、各フェーズを独自のメソッドに抽出することの利点は何ですか?私が知る限り、私たちが得るのは、読みやすさと、各フェーズの個別の変数スコープです(これにより、特定のフェーズの変更が誤って別のフェーズを壊さないようにすることができます)。 ただし、これらの両方は、各フェーズを独自のメソッドに抽出することなく実現できます。リージョンタグを使用すると、コードを同じように読みやすい形式に折りたたむことができ(コードを展開して調査することにした場合に、このファイルに場所を残す必要がなくなるという追加の利点があります)、単純に各フェーズをラップします{}動作する独自のスコープを作成します。 この方法で行う利点は、実際には4番目のメソッドの内部動作にのみ関連する3つのメソッドでクラスレベルのスコープを汚染しないことです。長いメソッドをすぐに一連の短いメソッドにリファクタリングすることは、時期尚早な最適化と同等のコード再利用のように思えます。多くの場合決して発生しない問題に対処するために、余分な複雑さを導入しています。コードの再利用の機会が生じた場合、後からいつでも独自のメソッドにフェーズの1つを抽出できます。 考え?
27 c#  coding-style 

8
テクニカルブログはどのように作成しますか?[閉まっている]
私は通常、プログラミング関連のものについて多くを読みます。私が読んだトピックが私の仕事に直接関連していない場合(日常の仕事では使用しないアルゴリズムについての読書など)、それらを忘れます。 学んだことを強化する1つの方法は、ブログを書くことです。私はブログを書く初心者です。書き始めたとき、私はそれが非常に難しいことがわかりました。単純にコンテンツを再生する場合でも、約2時間かかります。ブログについてよく考えて書くには、多くの場合、丸一日か週末がかかります。 これは正常ですか?技術的なチュートリアル/技術的なブログを書くためのヒントはありますか?
27 writing 

9
アプリケーションを継承するときにすでに動作するコードの単体テストを書くことに価値はありますか?
明らかに、一部の古いアプリケーションは、そもそも記述された方法のために、単体テストを行うことができないか、非常に困難です。 しかし、おそらくユニットテストされる可能性のあるいくつかのヘルパーメソッドのように、それらのためにユニットテストを書くことをわざわざする必要がありますか? つまり、それらは犬のように書くことができますが、論理が複雑に脆弱であっても、時間のテストはそれが本来の方法で機能することを証明しました。リファクタリングと言う場合にのみユニットテストを行う必要がありますか、時間があるときはいつでもユニットテストを作成する必要がありますか? これを行うことに価値はありますか? また、メソッドの定義が曖昧かもしれないことを考慮に入れて、特定の条件でメソッドのいくつかが実際に何をすべきかを研究する必要があるかもしれません。

8
非推奨は有害と見なされますか?[閉まっている]
私は自分のコードのいくつかを-std=c++0xGCC のフラグでコンパイルしているところです。すべての若い人たちがやっていることを漠然と追いかけたいので(芝生にとどまっている場合)、警告がたくさん出ましたauto_ptr廃止されることについて。もちろん、私はそれauto_ptrがC ++ 0xで廃止されることを知っていましたが... 廃止は時間と労力の無駄ではありませんか?廃止されない理由(例としてauto_ptrを使用): まだサポートが必要な大量のコードがあり、何百万もの警告を生成しても、警告をオフにしたくなるだけです。 auto_ptr 少しナッフですが、実際にはブリキに書かれていることを行います。 私たちが本当に物事を非難したいなら、私は指名しprintf()ます。しかし、その後に続く悲鳴を想像してください。auto_ptrあまりにも多くの友人はいませんが、少なくとも私のC ++コードではprintf、まったく使用されていないを超えて使用されています。 委員会はこれを正しく行ったという悪い記録を持っています-彼らは名前空間のスコープで静的を廃止し、今では廃止されていないようです- auto_ptr同様のカムバックをしても私は驚かないでしょう 最後に、委員会の言うことは何でも、コンパイラの実装者はそれらを無視します-彼らは単に彼らの顧客コードを壊す危険を冒すことができません、彼らができるすべては刺激的な警告を出すことです。 だから私の質問-(auto_ptrsだけでなく、C ++だけでなく)非推奨を良いアイデアと考えていますか?そうであれば、なぜですか?

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