回答:
はい-同じ問題が見つかりました。OOPはすべての問題を解決する最良の方法ではありません。ただし、C#は機能的なパラダイムを非常によくサポートしており、現在いくつかのプロジェクトで正常に使用しています。
簡略化に関してここで興味深い話があり、少なくとも思考の糧になるはずです:http : //skillsmatter.com/podcast/design-architecture/simple-is-better
アスペクト指向プログラミングでは、「横断的関心事」を統一された方法で処理することにより、ある程度の効率を上げることができます。他にも考えられる利点はありますが、私の意見では、それはあなたにとって役立つでしょう。
http://en.wikipedia.org/wiki/Aspect-oriented_programming http://www.sharpcrafters.com/aop.net
さまざまな方法論に迷い込む前に、リファクタリングを利用してコードを簡略化および統合してください。これは、Fowlerのカタログである「リファクタリングのアルファリスト」です。これらはそれぞれ、C#コードの改善と管理に役立ちます。
再利用のために効果的に設計する方法を学び、標準のオブジェクト指向の方法論内に存在するインターフェース、抽象クラス、クラス階層、依存性注入、および同様のツールのアプリケーションを最適化することにより、希望の結果を達成するための方法を見つけることができます。 。
さらに、@ Chris Smithは、C#の新しいバージョン(3.5および4.0)に、コードをロックするのに役立ついくつかの関数型プログラミング機能が追加されているという事実をすでに指摘しています。
関数型プログラミングが好きな場合は、Microsoftの新しいF#言語を試してみてください。実際には、2つの方法論を組み合わせた「オブジェクト機能」に似ています。同じ.NETソリューションでF#とC#を混在させることもできます。
私はまた、AOPが確かにその用途を持っているという他のコメンテーターにも同意します!
OOPSにより多くのコードが発生した可能性がありますが、アプリケーションが大きい場合、OOPSによってもたらされる複雑さの低減により、保守可能で管理可能なコードと明確さがもたらされます。これが事実ではなく、負担として感じた場合は、不適切に使用した可能性があります。クラスがドメインオブジェクトを適切に表現しているかどうか、およびクラスオブジェクト間の通信が、プログラムでシミュレートしようとする実際のシステムでどのように発生しているかを確認してください。
C#では、コードが多すぎても、OOPS IMHOから移行する現実的な理由にはなりません。パラダイムシフトは、実際にはもっと有効な理由があるはずです。
C#で「構造化プログラミング」を行うことはできますが、時間と労力の無駄になると思います。主流の代替案のほとんどは、OOPSも利用しています。