Is phobos too fluffy?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.com
Thu Sep 17 18:40:34 UTC 2020


On 9/17/20 1:49 PM, Seb wrote:
> On Thursday, 17 September 2020 at 15:51:18 UTC, Andrei Alexandrescu wrote:
>> As wc -l counts, phobos has some 330 KLOC:
>>
>> $ wc -l $(git ls-files '*.d') | tail -1
>>   331378 total
>>
>> I noticed many contributors are fond of inserting empty lines 
>> discretionarily, sometimes even in the middle of 2-5 line functions, 
>> or right after opening an "if" statement. The total number of empty 
>> lines:
>>
>> $ git grep '^$' $(git ls-files '*.d') | wc -l
>>    38503
>>
>> So Phobos has 11.62% empty lines in it, on average one on every 9 
>> lines of code. I find that a bit excessive, particularly given that 
>> our coding convention uses brace-on-its-own line, which already adds a 
>> lot of vertical space. Here's the number of lines consisting of only 
>> one brace:
>>
>> git grep '^ *[{}] *$' **/*.d | wc -l
>>    53126
>>
>> That's 16% of the total. Combined with empty lines, we're looking at a 
>> 27.65% fluff factor. Isn't that quite a bit, even considering that 
>> documentation requires empty lines for paragraphs etc?
>>
>> Today's monitors favor width over height and I didn't yet get to the 
>> point of rotating my monitor for coding purposes. (It's also curved, 
>> which would make it awkward.) Would it be reasonable to curb a bit on 
>> the fluff factor? E.g. there should never be two consecutive empty 
>> lines, and code blocks shorter than x lines should have no newlines 
>> inside.
> 
> We shouldn't have these discussions.
> We should just use a code formatting tool (see e.g. how successful black 
> was in the Python world - https://github.com/psf/black) and be done with.
> 
> So IMHO the only productive discussion here is how we can get dfmt 
> (https://github.com/dlang-community/dfmt)  (or a new tool) in a shape, 
> s.t. it can be applied automatically.
> 
> Alternatively, for your specific request, there was [1], but I since 
> gave up on enforcing such style issues manually. As I mentioned, a tool 
> should handle this task for you.
> 
> [1] https://github.com/dlang-community/D-Scanner/pull/447

Great point. We have uncrustify working passably well at Symmetry, 
making them available for phobos is a matter of putting in the time.


More information about the Digitalmars-d mailing list