听起来你已经有了这两个:
快速失败.http://en.wikipedia.org/wiki/Fail-fast
失败安全.http://en.wikipedia.org/wiki/Fail-safe
这三个可能比任何其他人更好地服务于我:
尽可能避免状态.创建和使用不可变对象 - 它们更容易测试,更不容易背叛你.
不要写不必要的代码.这个很难.查看最近由Strunk和White 撰写的关于" 风格元素 "的文章.
每10分钟左右问自己:"这个笨吗?" 说实话.这个更难.
-Jason
我实施了多种方法来防止错误并从错误中恢复:
1)处理所有异常。正如您所说,“处理每个错误”。如果用户单击表单上的按钮,应用程序应该不会因未处理的异常而消失(“噗”)。出于这个原因,我用通用的 try catch 包装事件处理程序。
2) 使用完整的堆栈跟踪记录错误。当我重新抛出异常时,我总是创建一个新异常并将捕获的异常添加为内部异常。我的日志记录代码递归地解开消息,这比其他方式提供了更多的细节。
3) 决定你的类是否可重用。如果没有记录下来。考虑在代码中实现一个接口,例如IRestartable或IReusable。任何没有实现它的对象在使用一次后必须被丢弃。
4)永远不要假设线程安全。我经历了惨痛的教训才知道.NET 是极其多线程的。许多事件是在任意线程上处理的。用 .NET 编写的给定应用程序可能会同时执行许多线程,并且没有一行代码显式创建线程。
5) 保持变量范围尽可能窄。在使用对象的地方实例化对象,而不是在方法开头的大块中实例化对象。您可能会缩短对象的寿命,并且您不会忘记位于类或方法顶部的巨大块中不需要或重用的变量。
5)很简单,但我仍然看到它发生。像躲避瘟疫一样避免全局变量。我见过带有数百个未使用/重用变量的代码。弄清楚和重构是一团糟。