Jam*_* P. 3 language-agnostic conditional
在下面的例子中使用一个if与一个直接相结合的return可接受的做法,而不是在if里面有一块代码{}?这些在实践中是等同的还是其中一种方法的缺点?
Java中的一个例子:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext sc = this.getServletContext();
// Throw exception for fatal error (Servlet not defined in web.xml ?)
if( sc == null )
return; // old-style programming
// Careful with silent bugs ! Correct way of handling this is:
// throw new RuntimeException( "BookDetail: ServletContext is null" );
BookList bookList = WebUtil.getBookList( sc );
Run Code Online (Sandbox Code Playgroud)
Martin Fowler倾向于早日回归,并将这个想法称为Guard Clause.
就个人而言,我不喜欢Java,因为我更喜欢每种方法返回一次.然而,这是主观的,我可能是少数.
这不是回报,这是一个例外.代码完全没问题.
即使你用"返回东西"代替那个投掷,它仍然可以.
我认为这取决于可读性.代码应该以相同的方式运行.
我一直都在使用这样的东西
Function Blah() As Boolean
If expr Then
Return False
End If
Do Other work...
Return result
End Function
Run Code Online (Sandbox Code Playgroud)