mrb*_*lah 2 c# java oop coding-style
我有一个返回bool的简单方法,但它在内部加载各种对象.
我为每个检查null,但它变得非常难看.
有没有更好的办法?
public bool SomeTest(int id1)
{
bool result = false;
User user = userDao.GetById(id1);
if(user != null)
{
Blah blah = blahDao.GetById(user.BlahId);
if(blah != null)
{
FooBar fb = fbDao.GetById(blah.FooBarId);
if(fb != null)
{
// you_get_the_idea!
}
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
是否有一种模式可以使这更像是内联而不是嵌套if?
Jon*_*eet 15
是否需要做除检查实体是否存在以外的任何事情?我不会假设.
第一步:忽略"一个退出点"规则并减少嵌套:
public bool SomeTest(int id1)
{
User user = userDao.GetById(id1);
if (user == null)
{
return false;
}
Blah blah = blahDao.GetById(user.BlahId);
if (blah == null)
{
return false;
}
FooBar fb = fbDao.GetById(blah.FooBarId);
if (fb == null)
{
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
接下来的内容可能是特定于语言的......您使用的是哪种语言,以及该平台的哪个版本?你能改变你的DAO吗?C#具有更多的语言灵活性(lambda表达式,空合并运算符,类似的东西),在这种情况下可能很方便.
假设你无法恢复,只要你得到一个null就可以返回:
User user = UserDAO.GetById(id1);
if(user == null) return false;
Blah blah = blahDao.GetById(user.BlahId);
if(blah == null) return false;
Run Code Online (Sandbox Code Playgroud)
您可能还想查看Null对象模式