5 ms·
You could configure your IDE to re-format files into your favorite format and just have a pre-commit hook that formats them back into the official format. That'
by photonios 7y ago
You could configure your IDE to re-format files into your favorite format and just have a pre-commit hook that formats them back into the official format. That's how I work. No arguments about style and formatting, yet I get to make the code look how I personally prefer it.
- CrLf 7y agoThere is no such thing as "my favorite format" in that sense. Also, I don't mind reading code in other people's "favorite format" nor do I have any problem in following another person's style if that's the style agreed upon by the team.
- a1369209993 7y agoNo, we can't. My (and, by the sound of it, CrLf's) favorite format relies on information that your pre-commit hook has artificially removed from the code. Eg: munge(gidget, thing1,thing2,thing3); cmplt(dtypeA,valueA, dtypeB,valueB); (Most cases are more subtle (and thus less amenable to "oh, you just need to build a complete static type checker into the formatter") than this, but I wanted an obvious example.)
- RussianCow 7y agoIt seems like the signature of the functions should be different, especially the second example. I would have written the cmplt function to take tuple pairs: cmplt( (type_a, value_a), (type_b, value_b), ) That's much more clear about the relationship between each pair of values either way, and would get formatted nicely by Black.
- a1369209993 7y agoSorry, should have clarified: my example was written in C[0][1]; cmplt is something like (Dtyp* ,Dval* ,Dtyp* ,Dval* ), which is what I was alluding to with "just need a type checker". Also, in the code I anonymised that from, cmplt and munge are imported (well, #included) functions from a different library. 0: which doesn't have tuples anyway; you could use structs, but it doesn't really work well in context/practice. 1: I don't use python frecently enough to have ready examples of autoformatter stupidity on hand for it.
- edflsafoiewq 7y agoNo it wouldn't; black will put that all on one line if it can. The semantic information in vertical space is lost. A better example is a matrix laid out as a grid, which auto-formatters always destroy mat3x3( 0, a, -b, -a, 0, c, b, -c, 0, )
- a1369209993 7y agoTo be fair, I suspect RussianCow would write that as something like: mat3x3( rowvec3( 0, a, b), rowvec3(-a, 0, c), rowvec3( b,-c, 0), ) Which is probably better, especially with tuples instead of struct{Scalar[3]}. Doesn't fix mat3x3(( 0, a, b),(-a, 0, c),( b,-c, 0)) , though.
- zestyping 7y agoIt would also have been a better way to define the function, in Python 2. def cmplt((type_a, value_a), (type_b, value_b)): return ... I was sad when they removed argument unpacking in Python 3. I thought it was a really elegant feature of the language.
- joshuamorton 7y agoPretty much no one used it, and it was....weird. what do you think the result of def cmplt((type_a, value_a), (type_b, value_b)): return locals() is? Now granted, you shouldn't do that, but what you think it is? a dict with 4 keys, right? {'type_a': ..., 'value_b': ...}. That's wrong. It has those four keys, and two more: '.0' and .1', whose values are the packed tuples. !?!?!