4 ms·
One, very simple, example: int some_function( some_variable ) { if (some_variable) { b = 1; } else { b = 2; } log("Its important I log that I
by chadnickbok 15y ago
One, very simple, example:
int some_function( some_variable ) {
if (some_variable) {
b = 1;
} else {
b = 2;
}
log("Its important I log that I'm returning %d\n", b);
return b;
}
If its not obvious why this is superior...
- palish 15y agoint some_function( some_variable ) { log("Its important I log that I'm returning %d\n", (some_variable ? 1 : 2)); return (some_variable ? 1 : 2); }
- alisey 15y agoIn dynamic languages you can do this: some_function = function() { if (...) return 1; if (...) return 2; }.log("It's important I log that I'm returning");
- cpeterso 15y agoThe single return is also useful for post-condition assertions of return values and internal state.
- enneff 15y agoGo's defer feature, combined with named return values, lets you do this: func someFunction(b bool) (i int) { defer func() { log.Printf("I'm returning %d", i) }() if b { return 1 } return 0 } For more on defer, see this blog post: http://blog.golang.org/2010/08/defer-panic-and-recover.html http://blog.golang.org/2010/08/defer-panic-and-recover.html
- jtolle 15y agoThis of course exemplifies why it's impossible to declare almost any technique categorically "good" or "bad". Sometimes early returns make code shorter and more clear. Sometimes the opposite. To borrow from Stroustrup, experience and taste matter a lot.