函数应该对其服务依赖项进行验证(空检查)还是应该通过try / catch进行处理。
这种情况的一个特定示例是,例如,如果您使用带有ClearDefaulter函数的此类User,则此函数将从其维护的默认用户列表中清除该用户,这些默认用户可能保留了某些操作的默认值。这些用户可能只占用户群的> 1%的极少数,因此很少被调用。此功能取决于为默认程序提供CRUD操作的服务默认程序服务。运行defaulterservice是一种预期的情况,因此建议在功能中使用它之前,建议对它进行空检查或将其包含在try / catch中,并将其作为意外的异常处理。
function bool IsValidUser(User user, DefaulterService defaulterService, EntitlementService entitlementService)
{
if defaulterService == null || entitlementService == null)
{
//Handle error on the service
return;
}
if (user != null )
{
if (entitlementService.IsValidUser(user))
service.ClearDefaulter(user);
}
}
或
function bool IsValidUser(User user, DefaulterService service)
{
try
{
if (user != null)
{
if (entitlementService.IsValidUser(user))
service.ClearDefaulter(user);
}
}
catch(Exception ex)
{
// Handle all exceptions
}
}
我认为使用try / catch的好处是在try块中仅捕获了实际的业务功能,从而提高了可读性。缺点是它的性能不如简单的if验证。会有什么建议?