[coreboot] Proposal for new "Commenting" wiki text (was: [RFC] Deciding on style for multi-line comments)

Nico Huber nico.h at gmx.de
Thu Sep 8 00:09:33 CEST 2016

On 06.09.2016 00:04, Vadim Bendebury wrote:
> On Sun, Sep 4, 2016 at 7:42 AM, Nico Huber <nico.h at gmx.de> wrote:
>> Hi folks,
>> I think we kind of agreed that the wiki text about "Commenting" should
>> change. So here is my proposal, feel free to edit, add something or just
>> ack or complain about it.
>>> == Commenting ==
>>> Comments are good, but there is also a danger of over-commenting. NEVER
>>> try to explain HOW your code works in a comment: it's much better to
>>> write the code so that the _working_ is obvious, and it's a waste of
>>> time to explain badly written code.
>>> Generally, you want your comments to tell WHAT your code does, not HOW.
>>> Also, try to avoid complex comments inside a function body: if the
>>> function is so complex that you need to separately comment parts of it,
>>> you should probably go back to chapter 6 for a while.  You can make
>>> small comments to note or warn about something particularly clever (or
>>> ugly), but try to avoid excess.  Instead, put the comments at the head
>>> of the function, telling people what it does, and possibly WHY it does
>>> it.
>>> coreboot style for comments is the C89 "/* ... */" style. You may also
>>> use C99-style "// ..." comments.
>>> The preferred style for concise multi-line comments that explain a
>>> single piece of code is:
>>>       /* This is the preferred style for
>>>          shorter multi-line comments that
>>>          avoids excessive blank lines. */
> why does the concise style have to be so different from the verbose style?
> Lines starting with '* ' are easier identifiable as comments.

Well, until now, there were only arguments against and none for the lea-
ding asterisk. In [1] Linus calls it "visually unbalanced".

And let me quote my argument:
> But I'm really with Linus when it comes to the leading, single asterisk.
> It looks totally weird, IMHO
>   /* A small, concise comment
>      that doesn't fit a single line */
> is easier for the eye than
>   /* A small, concise comment
>    * that doesn't fit a single line */
> where your eyes somehow stick on the asterisk first and then have to
> search for the real start of the line.


[1] https://lkml.org/lkml/2016/7/8/625

> --vb
>>> Note that there shouldn't be leading asterisks on new lines in the
>>> concise style.
>>> The preferred style for long multi-line comments is:
>>>       /*
>>>        * This is the preferred style for multi-line
>>>        * comments in the coreboot source code.
>>>        *
>>>        * Description: A column of asterisks on the left side,
>>>        * with beginning and ending almost-blank lines.
>>>        */
>>> Some rules of thumb to decide which style to use:
>>> * If you are commenting a whole function (indentation level 0) or
>>>   something high level (indentation level 1), use the long style.
>>> * If you want to explain a single piece of code and your comment
>>>   doesn't span multiple paragraphs, use the concise style.
>>> * Otherwise you might want to ask yourself why what you're going to
>>>   explain doesn't deserve an own function.
>>> It's also important to comment data, whether they are basic types or
>>> derived types.  To this end, use just one data declaration per line (no
>>> commas for multiple data declarations).  This leaves you room for a
>>> small comment on each item, explaining its use.
>>> In case of doubt, the author of the code shall have the last word on
>>> comment styles. He should know best which style makes his code most
>>> readable.
>> Nico

More information about the coreboot mailing list