5 ms·
I'm going to take a contrarian view here. Code formatting is amazing in a corporate environment where nobody truly cares about their code -- it's just a means t
by vitiral 2y ago
I'm going to take a contrarian view here. Code formatting is amazing in a corporate environment where nobody truly cares about their code -- it's just a means to get a paycheck. It's also great for beginners to a language who are still trying to get a handle of the syntax.
But where you are nearly the sole owner of a small library and you are crafting that library to be beautiful and understandable... there is something pleasurable about structuring concepts so you have each on a single line, or creating similar functions so the concepts are structured by column.
I know not everyone will hold this view and that is fine, but when you are writing your own hobby library in your favorite language for your own purposes I recommend you try it out.
- JZL003 2y agoI do more research, one-off ,code and being able to align equals signs or successive lines which do similar things both makes me happy and makes it easier to skim. I think the Linux kernel does it too. Emacs has a way of aligning by common separators (=/, as well as quick regex) I guess I've never gotten into an actual serious debate with someone over formatting so I don't know what I'm avoiding, but sometimes auto formatted code makes it harder to skim
- lokar 2y agoEverywhere I’ve worked, including Google, many (probably most) people care a lot about the code and the format. Often too much. That was the point rsc was making.
- jsolson 2y ago[flagged]
- neilv 2y agoAlso, sometimes the formatting simply makes reading something messy merely tractable, not aesthetically pleasing. Once, a product launch depended on me urgently kludging a device driver in Python (long story). And this involved a large hand-maintained mapping table. I wrote it quickly but carefully, and found some formatting that made the table readable enough, without implementing a minilanguage in Python. But the Black formatter had been rigged to run automatically on commit, so... poof! :)
- tczMUFlmoNk 2y agoBlack supports ignoring sections with a `# fmt: off` directive, and a hand-formatted constant table is a common use for that: https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html#ignoring-sections https://black.readthedocs.io/en/stable/usage_and_configurati... Other formatters have similar functionality; e.g.: - /* prettier-ignore */: https://prettier.io/docs/en/ignore.html#javascript https://prettier.io/docs/en/ignore.html#javascript - #[rustfmt::skip]: https://github.com/rust-lang/rustfmt?tab=readme-ov-file#tips https://github.com/rust-lang/rustfmt?tab=readme-ov-file#tips
- neilv 2y agoThank you, that'll come in handy again, I'm sure.
- markrages 2y agoYes! Code is for people to read, not computers. Beautiful code uses the full expressiveness that the language allows.
- JyB 2y agoAnd people have, by definition, a much easier time reading code when it’s always consistent across codebases. Thanks for making the point.
- striking 2y agoI think you're doing yourself a disservice by having to play with the formatting itself instead of being able to express what you mean with the tools the language already provides you. As soon as anyone else looks at your code or wants to participate in the development process, what is meaningful to you about the arrangement simply won't translate into their view; what is the use of a programming language if not to use its existing definitions and concepts to communicate the concepts of programming? You can use fancy syntax tricks, but domain-specific languages are a much better way to handle the same problem. You can express things with them that other humans can understand while still retaining access to your existing formatting tools.
- vitiral 2y agoI personally dislike ad-hoc DSLs that aren't composed of the language's existing syntax. Considering I get pleasure from formatting the code beautifully I'm not sure how it's even possible to be doing _myself_ a disservice. It's like saying I'm doing a disservice learning guitar instead of listening to Coldplay on my speakers. As far as others are concerned... I agree somewhat, but I don't think it's by any means proven. I think we are always better off then cobbled together code where formatting hasn't been thought about. By well-designed hand-crafted formatting can be expressive in it's own way IMO
- thfuran 2y agoYou'd write a DSL to somehow clarify formatting a matrix literal instead of just putting some spaces as needed to get the rows and columns to line up cleanly?
- rowanG077 2y agoI mean you can do whatever you want in a hobby project you work on solo. I do want to say that I have the opposite view. People who use formatters want their code to be consistent and go the extra mile it ensure it does. It's like manual testing vs automated testing to me. Sure with manual testing you can test many more corner cases as they come up as an intelligent person is in the loop. But there will be mistakes made, tests forgotten etc. Just like there will always be inconsistencies when you manually format the code.
- vitiral 2y agoIm not sure how it's even remotely related to testing. I do agree that it depends on the person, just like every medium depends on both the artist creating the work and the patrons viewing it. Many people who use formatters (myself included) just want consistent code and don't want to bicker with others about it. When it is soley owned by me and I'm doing it for fun, these reasons fall away for me.
- rowanG077 2y agoIt meant to illustrate the same human weakness in consistency and repeatability disadvantages both manual testing and manual formatting. In essence manually formatting is a baker making every bread by hand. Some bread will be better then others. In contrast to an automated factory turning out the same quality bread every day.
- vitiral 2y agoAh, makes sense. I think there are use-cases for both, even personal hobby projects. There's some languages with so much damn syntax that I don't think I could even begin to write code without a formatter (I'm looking at you rust and Java) and others where it stays out of your way (python, Lua, etc)
- thfuran 2y agoA language with semantic white space seems a somewhat strange choice for an example of when formatting stays out of your way.
- erik_seaberg 2y agoThis. Automatically doing it well (clarifying the intent of the code) is an AI-complete problem. That's not an excuse for automatically doing it poorly and forcing everyone else to live with it.
- paulddraper 2y agoI don't find the mental burden of formatting code to have a positive ROI. I want to write syntacially-valid code, without worrying about the visual presentation of it. (I want a good presentation, but I don't want to put forth the effort to create it.)
- fragmede 2y agoYeah that's why I fight with how I feel about python so much. In other languages I can just shove the curly bracket in the right place and fix the whitespace later, but Python has whitespace as significant, so I'm forced to fix it/get it right. But that means it's right when I dig a "temporary" script up years later.
- paulddraper 2y agoYou can write a lot (but not all) Python on one line. And my IDE makes it very easy to indent a snippet.