多くのロギング情報(時間など)を持つメソッドの呼び出しのロギングを実装する必要があります。私はこれのようにすることができます:ロギング操作、より良い実装方法
var stopwatch = new Stopwatch();
OCRResult ocrResult = await ocr.GetTextAsync(dataStream, filename, language);
stopwatch.Stop();
// log here, with time, result etc
私はこのアプローチが嫌いです。まずはじめに、私は多くの場所で多くの呼びかけをしており、コードを公表する必要があります。第2に、このアプローチはSRP(単一の責任ある原則)に違反し、各呼び出しが1つの作業を行います。私はラッパーを行うか、Strategyパターンを使用する必要があります。いずれにしても、それを行うためにもう1つのクラスを作成する必要があります。しかし、それを実装する方法は?
PostSharpのようなものは、この種のメソッド計測を注入することができます。あなたのプロジェクトが小さな面にあれば、それを無料で使うことさえできます。 – Crowcoder
[この記事](https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=91)では、アプリケーションの設計方法を簡単に説明しています。パフォーマンスのプロファイリングとロギングに関わるクロスカッティングを追加し、PostSharpなどのコード製織ツールの使用を防ぎます。 – Steven
@Stevenは、多くの継承が行われていない限り、Decoratorを扱いにくいものにすることに同意しました。 – Crowcoder