On Tue, May 26, 2020 at 06:24:49PM +0300, Nikolay Borisov wrote: > > > On 26.05.20 г. 17:21 ч., Johannes Thumshirn wrote: > > The 'out' label in find_first_block_group() does not do anything in terms > > of cleanup. > > > > It is better to directly return 'ret' instead of jumping to out to not > > confuse readers. Additionally there is no need to initialize ret with 0. > > > > Signed-off-by: Johannes Thumshirn <johannes.thumshirn@xxxxxxx> > > I personally prefer returning fast aka the way you've done it but dunno > if David is a fan of this. In any case: I'm not and the pattern that should be used is a mix of both. The first part is for the 'obvious' cases: Early exit from function can use return, eg. when a feature is not enabled, when there's no cleanup needed, when the return is inside an if and is not nested For the rest it's recommended to use the goto and single return as it may be a big chunk of code with a lot of nesting and a return somewhere in the middle reads harder. In example of find_first_block_group the first 'goto out' after btrfs_search_slot would be a candidate to convert to return, but the rest is inside a while loop so goto is preferred. It is also important to keep one style and switch to it eventually and I think that the goto + single return is quite common nowadays, exceptions exist in the old code.
