エラーを防止および回復するために、さまざまな方法を実装しています。
1) すべての例外を処理します。あなたが述べたように、「すべてのエラーを処理する」。ユーザーがフォームのボタンをクリックした場合、未処理の例外からアプリケーションが消えてしまう ("poof") 可能性はありません。そのため、一般的な try キャッチでイベント ハンドラーをラップします。
2) 完全なスタック トレースでエラーをログに記録します。例外を再スローするときは、常に新しい例外を作成し、キャッチされた例外を内部例外として追加します。私のロギング コードはメッセージを再帰的にアンラップします。
3) クラスを再利用可能にするかどうかを決定します。そうでない場合は、文書化します。IRestartable
またはのようなインターフェイスをコードに実装することを検討してくださいIReusable
。それを実装していないオブジェクトは、一度使用したら破棄する必要があります。
4) スレッドセーフを仮定しないでください。私は、.NET が非常にマルチスレッド化されているという難しい方法を学びました。多くのイベントは任意のスレッドで処理されます。.NET で記述された特定のアプリは、多数の同時実行スレッドを持つことができ、1 行のコードで明示的にスレッドを作成することはできません。
5) 変数のスコープをできるだけ狭くします。メソッドの先頭にある大きなブロックではなく、使用される場所の近くでオブジェクトをインスタンス化します。オブジェクトの寿命が短くなる可能性があり、クラスまたはメソッドの上部にある巨大なブロックにある不要または再利用された変数を忘れることはありません。
5) シンプルですが、まだ起こっていることがわかります。ペストのようなグローバルを避けてください。何百もの未使用/再利用変数を含むコードを見てきました。把握してリファクタリングするのは面倒でした。