有时我的同事对使用该return
语句离开例程(在结束之前)皱着眉头,因为它看起来像是一种隐藏的 goto 并且所有 goto 都是邪恶的。我既不认为 goto 不管如何使用都不好,也不能真正理解为什么这样使用return
如此糟糕。
这个问题与语言无关。我目前使用 PL/SQL 和 Objective-C 进行编程,所以我会用这种语言给出示例。
Objective-C
-(void)finishedLoading:(NSString*)result success:(BOOL)success
{
NSLog(@"delegate method finished loading invoked");
if (!success) {
self.status.text = @"Failed to load file.";
return; // IS THIS BAD??
}
self.status.text = @"File loaded.";
// do more stuff here with result string
}
PL/SQL
PROCEDURE example(i_parameter pls_integer)
AS
BEGIN
IF i_parameter IS NULL THEN
RETURN; -- is this bad??
END IF;
-- do more stuff here
END example;
这些例子实际上只是例子,也许它们可以被批评,但我更想知道为什么return
不应该这样做。我看到的唯一替代方法是有一个常规的广泛包含 if 语句的可能嵌套的 if 语句,这使得它难以阅读,但有些人更喜欢这样,我从来不知道为什么。