BlueStyle icon indicating copy to clipboard operation
BlueStyle copied to clipboard

Line limit to 120

Open mattBrzezinski opened this issue 3 years ago • 10 comments

I'm finding the 92 line limit very restrictive and forcing breaks more often than not. Between giving a function a meaningful parameter name and typing it you're more often than not breaking this line with a couple parameters.

I'd propose increasing this line length to 120, it allows you to reasonably read two files side-by-side in an editor. I think this is goes a bit hand in hand with #76 and I think makes things easier to read.

Some Linus thoughts from a fixed 80 character limit.

mattBrzezinski avatar Nov 09 '20 23:11 mattBrzezinski

I can only hit 112, not 120.

I think 100 would be best.

iamed2 avatar Nov 11 '20 19:11 iamed2

I'll take anything, do others have thoughts?

mattBrzezinski avatar Nov 12 '20 17:11 mattBrzezinski

I think 120 is a little bit much. So I'd compromise to 100

fchorney avatar Nov 12 '20 17:11 fchorney

i'd be a little bit interested in knowing what effect this has in terms of reducing line breaks. JuliaFormatter has a BlueStyle and let's you configure line length (via the margin keyword e.g. format("path/to/src/", BlueStyle(); margin=N), so we could see across a bunch of different packages how changing N changes the total number of line breaks?

nickrobinson251 avatar Nov 12 '20 17:11 nickrobinson251

I'd propose increasing this line length to 120 !!

zsz00 avatar Oct 14 '21 09:10 zsz00

If I recall correctly the original reason 92 was chosen was because it is the line length limit specified by the Julia contribution guide.

omus avatar Feb 17 '22 20:02 omus

If I recall correctly the original reason 92 was chosen was because it is the line length limit specified by the Julia contribution guide.

The commit for this was made 7 years ago, maybe it's time to revisit? 😄

mattBrzezinski avatar Feb 17 '22 20:02 mattBrzezinski

i'd be a little bit interested in knowing what effect this has in terms of reducing line breaks. JuliaFormatter has a BlueStyle and let's you configure line length (via the margin keyword e.g. format("path/to/src/", BlueStyle(); margin=N), so we could see across a bunch of different packages how changing N changes the total number of line breaks?

Just got brought up in the office again. I went through all the packages below and ran format(".", BlueStyle()) did a git add ., then re-ran format(".", BlueStyle(); margin=100) (only 100 since it seemed more agreed upon from previous discussions). These are the results of the following git diff --shortstat:

mattBrzezinski avatar May 16 '22 18:05 mattBrzezinski

I'm not a linguist or typographer, but 92 characters seems fine with a few assumptions by taking
(things on the line) * (max length of each thing) + (connectors between things) as an equation for line length

If you assume most people can keep 5-9 things in mind at a time, that indentation is some of those things, and if you really stretch it an assume that the length limit for remembering a word is between 5 and 9, then the upper limit on that is actually (9*9 + 8) = 89

I think 89 is short, especially considering that the 7 +- 2 rule is outdated (though 4 +- 1 is apparently more accurate) (https://en.wikipedia.org/wiki/Short-term_memory#Capacity), but it suggests that 92 characters is long enough

Wynand avatar May 18 '22 20:05 Wynand

@Wynand one of the most common things, AbstractArray, is of length 13. As you have more functions in your codebase, the length of the things are probably going to increase. If you look at the top-level symbols in Base, the average size is greater than 11:

julia> mean(length∘String, names(Base; all=true, imported=true))
11.476996687523004

(a better measurement could be done with a parser rather than just looking at the top level)

@mattBrzezinski can you show those diffs? it might be interesting as a sample of lines that are impacted by the current line length limit.

iamed2 avatar May 19 '22 15:05 iamed2