我对OOP很新,在我正在编写的程序中,我有一个包含一些常规方法的Utilities类。我应该在Utilities类中包含我的错误检查,还是应该仅为错误检查创建一个新类?
答案 0 :(得分:2)
“公用事业”课程倾向于成为怪物的恶习 - 将错误检查代码分开。
答案 1 :(得分:1)
我不知道您想要做什么,但可以肯定的是,错误检查类不应该在您的Utilities类中。错误处理是一类威胁它自己的类的功能。
另外,请记住OOP 不将您的函数和例程放在类中。 OOP正在制作代表事物的类。尽量避免使用“实用工具”课程。
答案 2 :(得分:1)
一般来说,我要么在编写代码时处理错误,要么让调用者处理错误(即让异常通过调用堆栈)。它是否是效用函数并不重要。
public static class Utility
{
public static string GetSomeString(string someOtherString)
{
try
{
// something
}
catch (exception ex)
{
// handle error
}
return result;
}
}
答案 3 :(得分:0)
我认为都不是。错误通常是异常,它们是自己的类,并且在您知道如何处理它们的地方完全处理。
如果您正在寻找日志记录或类似任务,您应该使用完成的框架,例如Log4Net,或使用PostSharp提供的AOP。
答案 4 :(得分:0)
错误检查,这样的输入验证应该与需要检查的内容一起 - 除非它相当复杂,在这种情况下应该将它移动到被检查事物的类中的单独方法。如果它仍然太复杂,那么应该制作一个专门用于验证的单独的类。验证类应嵌套在主类中,或者应标记为internal
。
答案 5 :(得分:0)
如何在Global.asax文件中使用Application_Error事件?当应用程序中发生任何未处理的错误时,会被触发。
答案 6 :(得分:0)
有不同形式的错误检查
如果你的意思是在有效性的意义上进行错误检查id jsut在代码中执行...当你发现你有常见的测试时,EG字符串有长度,也许正则表达式...整数有一个范围......我结束了使用这些测试的静态类,但这只是一个重构。我最终得到一个带有子静态类的静态类来获取方法......
单元测试
这些将在与主代码不同的项目中再次简单地定义方法范围。
错误检查。
我倾向于在整个商店使用debug.assert语句在我的方法和函数中进行一般错误检查,以便在调试时测试假设 - 我倾向于将它们用作单元测试的弱形式。
例外管理
这取决于您正在使用的区域。后端的例外管理方案与前端有很大不同。
for iinstance WCF有一个异常接口。 IErrorHandler iirc正确,但就连接到它的任何东西而言,只有一些可以触发的错误。在后端,这些故障可能是由异常引起的,这些异常是很多异常,并且在所有级别都附加了数据。您不希望数据到达前端 - 但您需要记录它。因此,前端的异常只是真正异常的外壳......我的观点是,当你排序出来时,你的实用程序类将是巨大的,你会想要开始将它分解为几个类
但这就是为什么异常需要在一个单独的项目中 - 然后你可以从全部引用它们并重用它们。
我有一个项目,我倾向于包含处理错误。 我还有一个WCF服务设置,我可以触发异常,以便记录它们,如果我们了解它们(考虑目标错误修复)。
事情如何发展的一个例子是,这部分需要能够序列化错误及其所有数据。
所以我会回避单个实用程序类......一旦开始范围蔓延,以单一方法开始的事情通常以惊人的速度增长。
这种超越OOP的更多架构问题 - 您需要知道为什么要将代码移动到实用程序类中,然后需要决定是否只是将它放在那里就足够了......我建议你移出它很好,但你应该更进一步,将错误管理视为一个完整的解决方案。它乞求SOA风格的解决方案(或至少是项目)imo ....它的一个不仅在应用程序中很常见,而且也是不变的......