[webkit-dev] Code Style: Opinion on returning void

Alex Christensen achristensen at apple.com
Wed Feb 20 15:03:39 PST 2019


I like it mostly for its brevity, but I also think it would be strange that changing a return type from bool to void or vice versa would require touching all its call sites.

> On Feb 20, 2019, at 1:20 PM, Chris Dumez <cdumez at apple.com> wrote:
> 
>> 
>> On Feb 20, 2019, at 1:14 PM, Maciej Stachowiak <mjs at apple.com <mailto:mjs at apple.com>> wrote:
>> 
>> 
>> It seems like `return foo();` where foo() is a void function can always be replaced with `foo(); return;` for greater clarity at the cost of one extra line break. For people who prefer the one-line style, can you say why you don’t like the other way?
> 
> We do not allow more than one statement per line so it would be:
> foo();
> return;
> 
> Also, since we favor early returns in WebKit, things like:
> If (!nok)
>     return completionHandler(Failed);
> 
> Would become:
> If (!nok) {
>     completionHandler(Failed);
>     return;
> }
> 
> It is not a big deal but I personally prefer the most concise version. Especially, it is not uncommon to have multiple early returns.
> I think more concise is better and I personally do not see a readability issue here. It does not really matter what the completion handler is returning.
> 
>> 
>>  - Maciej
>> 
>>> On Feb 20, 2019, at 10:33 AM, Simon Fraser <simon.fraser at apple.com <mailto:simon.fraser at apple.com>> wrote:
>>> 
>>> I find it mind bending. It makes me wonder if the author made a coding error.
>>> 
>>> Simon
>>> 
>>>> On Feb 20, 2019, at 7:48 AM, Daniel Bates <dbates at webkit.org <mailto:dbates at webkit.org>> wrote:
>>>> 
>>>> Thanks for the opinion!
>>>> 
>>>> Dan
>>>> 
>>>> On Feb 20, 2019, at 7:26 AM, Saam Barati <sbarati at apple.com <mailto:sbarati at apple.com>> wrote:
>>>> 
>>>>> I prefer it as well.
>>>>> 
>>>>> - Saam
>>>>> 
>>>>> On Feb 20, 2019, at 6:58 AM, Chris Dumez <cdumez at apple.com <mailto:cdumez at apple.com>> wrote:
>>>>> 
>>>>>> I also prefer allowed returning void. 
>>>>>> 
>>>>>> Chris Dumez
>>>>>> 
>>>>>> On Feb 19, 2019, at 10:35 PM, Daniel Bates <dbates at webkit.org <mailto:dbates at webkit.org>> wrote:
>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Feb 19, 2019, at 9:42 PM, Ryosuke Niwa <rniwa at webkit.org <mailto:rniwa at webkit.org>> wrote:
>>>>>>> 
>>>>>>>> On Tue, Feb 19, 2019 at 8:59 PM Daniel Bates <dbates at webkit.org <mailto:dbates at webkit.org>> wrote:
>>>>>>>> > On Feb 7, 2019, at 12:47 PM, Daniel Bates <dbates at webkit.org <mailto:dbates at webkit.org>> wrote:
>>>>>>>> >
>>>>>>>> > Hi all,
>>>>>>>> >
>>>>>>>> > Something bothers me about code like:
>>>>>>>> >
>>>>>>>> > void f();
>>>>>>>> > void g()
>>>>>>>> > {
>>>>>>>> >     if (...)
>>>>>>>> >         return f();
>>>>>>>> >     return f();
>>>>>>>> > }
>>>>>>>> >
>>>>>>>> > I prefer:
>>>>>>>> >
>>>>>>>> > void g()
>>>>>>>> > {
>>>>>>>> >     if (...) {
>>>>>>>> >         f();
>>>>>>>> >         return
>>>>>>>> >     }
>>>>>>>> >     f();
>>>>>>>> > }
>>>>>>>> >
>>>>>>>> Based on the responses it seems there is sufficient leaning to codify
>>>>>>>> the latter style.
>>>>>>>> 
>>>>>>>> I don't think there is a sufficient consensus as far as I can tell. Geoff 
>>>>>>> 
>>>>>>> I didn't get this from Geoff's remark. Geoff wrote:
>>>>>>> 
>>>>>>> ***“return f()” when f returns void is a bit mind bending.***
>>>>>>> Don't want to put words in Geoff's mouth. So, Geoff can you please confirm: for the former style, for the latter style, no strong opinion.
>>>>>>> 
>>>>>>>> and Alex both expressed preferences for being able to return void,
>>>>>>> 
>>>>>>> I got this from Alex's message
>>>>>>> 
>>>>>>>> and Saam pointed out that there is a lot of existing code which does this. 
>>>>>>> 
>>>>>>> I did not get this. He wrote emphasis mine:
>>>>>>> 
>>>>>>> I've definitely done this in JSC. ***I don't think it's super common***, but I've also seen code in JSC not written by me that also does this.
>>>>>>> 
>>>>>>>> Zalan also said he does this in his layout code.
>>>>>>> 
>>>>>>> I did not get this, quoting, emphasis mine:
>>>>>>> 
>>>>>>> I use this idiom too in the layout code. I guess I just prefer a more
>>>>>>> compact code.
>>>>>>> ***(I don't feel too strongly about it though)***
>>>>>>> 
>>>>>>> By the way, you even acknowledged that "WebKit ... tend[s] to have a separate return.". So, I inferred you were okay with it. But from this email I am no longer sure what your position is. Please state it clearly.
>>>>>>> 
>>>>>>>> - R. Niwa
>>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> webkit-dev mailing list
>>>>>>> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
>>>>>>> https://lists.webkit.org/mailman/listinfo/webkit-dev <https://lists.webkit.org/mailman/listinfo/webkit-dev>
>>>>>> _______________________________________________
>>>>>> webkit-dev mailing list
>>>>>> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
>>>>>> https://lists.webkit.org/mailman/listinfo/webkit-dev <https://lists.webkit.org/mailman/listinfo/webkit-dev>
>>>> _______________________________________________
>>>> webkit-dev mailing list
>>>> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
>>>> https://lists.webkit.org/mailman/listinfo/webkit-dev <https://lists.webkit.org/mailman/listinfo/webkit-dev>
>>> 
>>> _______________________________________________
>>> webkit-dev mailing list
>>> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
>>> https://lists.webkit.org/mailman/listinfo/webkit-dev <https://lists.webkit.org/mailman/listinfo/webkit-dev>
>> 
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
> https://lists.webkit.org/mailman/listinfo/webkit-dev <https://lists.webkit.org/mailman/listinfo/webkit-dev>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20190220/89e9022b/attachment.html>


More information about the webkit-dev mailing list