2017-02-16 5 views
1

これは繰り返しの質問かもしれませんが、WEB API、ASP.NET、WCFのようなステートレスアプリケーションについて話すことができます。これはすべて状態が少ないアプリケーションです。だから、私は静的クラスのビジネスロジックに行くことができます。静的なアプリケーションのため、より速く動作します。ビジネスロジックで静的クラスを使用できますか?

私たちのASP.NET MVCアプリケーションでは、ビジネスロジック用に別々のプロジェクト(ライブラリ)が用意されています。私たちは静的クラスを使用しています。静的で動く良い方法ですか?

+3

「静的アプリケーションの方が速く動作するため」誰があなたにこのことを話しましたか? –

+0

コードが静的であるため、コードがあまり役に立ちません。実際には、キャッシュされたよりも一度初期化されているので高速かもしれませんが、これは非静的なクラスでも機能します。 – HimBromBeere

+0

より高速な静的クラスではなく、インスタンスメソッドより高速な静的メソッドです...しかし、その差はごくわずかです。 (静的メソッドは 'this'参照を含む隠しパラメータを持たないため、より速くなります。より少ないパラメータ - >より速く呼び出すことができます)。静的なクラスは、C#の純粋にsynactacticな糖です(IL中間言語には存在しません) – xanatos

答えて

1

スタティッククラスの使用には大きな欠点があります:ユニットテストのための模擬は非常に難しいです(使用するフレームワークによってはユニットテストさえ難しい)。静的メソッドでさえモックするのは非常に難しいです。静的クラスには本当の利点はないので、答えは:ビジネスロジックに静的クラスを使用しないことです。ビジネスメソッドに静的メソッドを使用しないでください。

+0

あなたに同意します;) –

0

いいえ 静的クラスを使用すると、クラスのインスタンスを作成したくないため、ビジネスロジックの非常に後のケースです。

0

そのないいくつかの理由のために良い:

  1. 静的クラスはインスタンス化し、基本的にはOOD原理を殺すそのため、共有されていない状態を保存することはできません。
  2. staticは状態を保存してインスタンス化することができないので、通常、メソッドのシグネチャはより複雑になり、コードはもっと乱雑になります。
  3. 多くの静的コードがあり、コードを複製するときに間違ってしまうのは簡単です。
  4. 静的なコードを頻繁に記述すると、プロジェクト境界を正しく維持することが難しくなります。

要するに、拡張メソッドなどの「静的」を叫ばない限り、静的なコードは避けてください。クリーンコードとソリッドの原則は、なぜそれを避けるべきかをより深く理解することができます。

関連する問題