|
trønderen wrote: to define a Norwegian standard placement for all those new characters
You, guys have too many characters in your language! Just get rid of those! (says he, whose mother tongue has 5 extra characters... or 10 if you count the caps form).
Mircea
|
|
|
|
|
You didn't keep your promise ...
|
|
|
|
|
That's actually a very good point.
It's probably just
1. the jarring nature of it (diff from past)
2. all those extra characters (_)
You've really made a great point here though & you've got me thinking.
|
|
|
|
|
Mircea Neacsu wrote: Programs should be read as books.
Nope.
I read books.
I work on programs.
Those two are not the same.
I read very fast and I can even skip paragraphs and even pages and still understand the flow even when it is text book.
If I do that when writing a program or reviewing others code (which I do extensively and in detail) problems will be missed.
Mircea Neacsu wrote: aBookThatIsTypesetInLongWordsAlmostLikeGerman
Flawed example.
The variable name is too long and very likely the logic is flawed since the only need for that would be if the context was so complex (too complex) that it required that.
|
|
|
|
|
jschell wrote: Those two are not the same.
I read very fast and I can even skip paragraphs and even pages and still understand the flow even when it is text book.
If I do that when writing a program or reviewing others code (which I do extensively and in detail) problems will be missed. Even if I would agree with your point, which I don't, how is camel case making life better? I fail to see the connection.
My eyes, which have been used since a young age with the beauty and the rhythm of a nicely typeset page, are just offended by the ugliness of camel case. Snake case is slightly better but if someone, one day invents an invisible link, I would gladly switch to that.
Getting back to the issue of programs like books, not that I want to hide behind the authority of others, I think I'm in good company if I remind myself of Knuth's literate programming concept and Hal Abelson's quote: "Programs must be written for people to read, and only incidentally for machines to execute". Anyway, that's at least how I try to practice my trade and, if I have to agonize for the best name for a structure or a method, so be it.
Mircea
|
|
|
|
|
Mircea Neacsu wrote: how is camel case making life better?
You provided an example which I commented on.
Mircea Neacsu wrote: My eyes...are just offended by the ugliness of camel case
Which is obviously subjective. In terms of maintaining code neither of the following is objectively better.
int userCount;
int user_count;
Mircea Neacsu wrote: I remind myself of Knuth's literate programming concept and Hal Abelson's quote: "Programs must be written for people to read, and only incidentally for machines to execute"
Which was exactly my point when I pointed out that I work on them and review them.
|
|
|
|
|
Usually PascalCase, but camelCase for member data and locals.
|
|
|
|
|
I reject the premise of the question.
|
|
|
|
|
PIEBALDconsult wrote: I reject the premise of the question.
I like it!!!
It is baseless.
Reminds me of an old great quote:
Benjamin Franklin (the dude on the $100USD bill) "Your argument is sound! Nothing but sound!"
|
|
|
|
|
In[Case]
PartsBin an Electronics Part Organizer - An updated version available!
JaxCoder.com
|
|
|
|
|
|
In my first 10-15 years of programming, hardcopy printouts were still common. Both my university and my first employer used a printer model placing the underscore so low that it almost hit the top of the characters on the line below; you certainly didn't see it as tying two characters together. In a listing, a name with underscores looked like several space separated words. For variables starting / ending with an underscore, the underscore was easily overlooked. This could at times be really confusing. So I came to strongly dislike underscores in identifiers.
If you really wanted to underscore a text line for emphasis, like in a header, these printers were fine - they didn't clutter up the text. Other printers, placing the underscore at the character baseline, were not suitable for underscoring. E.g. an underscored h would be very similar to a b, an underscored n was close to an o. So for emphasizing text, our printers were great, but not for underscore used as a printable character in an identifier.
|
|
|
|
|
Great point about printers and the challenges of underscores. Thanks for sharing.
This is also the reason we used to like Hungarian notation so much back then too.
We did "offline" code reviews where we sat around a table and looked at code print-outs.
Hungarian made sense because you could be a couple pages down and still know the type without looking back up at the declaration.
Of course, there was no intellisense back then either so...
These kids don't know what they got!!!
|
|
|
|
|
raddevus wrote:
so much back then too. ...you could be a couple pages down and still know the type without looking back up at the declaration
Also when it was less clear that a context that was pages long was probably going to end up being a problem for maintenance no matter what it looked like.
Like an actual C++ class that I worked on that I calculated had 20,000 lines of code, hundreds of variables and hundreds of methods. It also spanned multiple files. I might not have even found all of the files.
|
|
|
|
|
raddevus wrote: Hungarian made sense because you could be a couple pages down and still know the type without looking back up at the declaration. A couple of pages? The biggest type declaration I have been almost in touch with (I was offered an opportunity to see it, but declined ) was about 8300 lines long. 72 lines per page makes a 120 page book for that declaration alone.
For the curious ones: The type declaration appeared in the CHILL source code of the System 12 telephone switch, when the very first software version was being prepared. My guess is that it grew considerably further throughout the lifetime of System 12. It defined a message format, with variant fields for different function codes all embedded in a single type declaration, 'to have it all in one place'. The number of codes / variants most likely grew in later releases.
|
|
|
|
|
I use pascal case in .NET, camel case in JS, and snake case in my libraries in C++.
To err is human. Fortune favors the monsters.
|
|
|
|
|
wow! you use snake_case in C++?
I only use snake_case in Rust bec I'm forced to. (oldish c/c++ dev here).
|
|
|
|
|
particularly for my libraries. I also tend to make heavy use of Generic Programming and thus templates, and so my libraries tend to be very STLish as it is. Consequently, I tend to follow STL patterns.
To err is human. Fortune favors the monsters.
|
|
|
|
|
Ahh...never used much STL stuff because I (oddly) took up C# (in 2000/2001 very early) & that was when STL was coming on more strongly. My loss / lack of experience.
|
|
|
|
|
I don't use it a lot because it doesn't handle IoT very well without custom allocators and such, and even then it is heavy on little allocs and deallocs.
I do study it though, because I believe in generic programming as a concept, when it comes to C++. If you aren't coding with GP, you aren't using the most powerful, flexible feature of C++. Templates really are where it's at with this language. They are first class, and if they aren't first class in your code, you're probably not using it to its full potential.
To err is human. Fortune favors the monsters.
|
|
|
|
|
I pretty much do whatever strikes my fancy at the moment, throwing structure, conventions, and consistency to the wind.
I find that adopting a care-free attitude to coding makes for a more interesting and fun time while testing and debugging my code in Production.
|
|
|
|
|
I actually love this bec I feel very similarly.
But it is probably the latent Artist hiding in my brain which is usually beaten senseless by my inner Computer Scientist.
|
|
|
|
|
I'm a solo dev and as such have complete autonomy to do as I please. It's funny that it has changed through the years as IDEs/autocomplete have gotten better, and my eyesight has gotten worse!
In the beginning, I followed the way I was taught at uni, which was either scopeTypeName for public/global or typeName for locals. Back then before IDEs got smarter, I also used very short variable names.
As time wore on and my eyesight got worse, I started to favor snake_case_descriptive_names so that it was easier for me to read and understand. Additionally, IDEs had improved such that long names weren't an issue as far as typing and type recognition while reading/debugging.
As for generic objects like iterators, indexes, database objects (connections, datatables, readers, etc.) I have a stock set that I have used for 20+ years. IMHO, these are distinctive enough as to basically serve as a digital fingerprint.
Currently, I'm the only on working on my code, but I realize that may not always be the case. I'd like to think that between descriptive variable name, my shorthand, and sparse commenting, that the next poor chap who sees it can understand what this mess actually does!
Regarding curly braces, when I have to use them, I like the opening brace on a new line with everything indented between.
"Go forth into the source" - Neal Morse
"Hope is contagious"
|
|
|
|
|
PascalCase for non-locals, sometimes prefixed by "_" for private /protected values. snake_case for locals.
For some reason camelCase has always offended my sensibilities.
Software Zen: delete this;
|
|
|
|
|
It depends on the language. For JavaScript and TypeScript it's camelCase . For C I'll use all three depending on my mood and the project.
As an aside, I too want to like Rust, but its opinions are a bit too opinionated. While I understand the reason they chose snake_case for a systems language, I just can't help but feel that's an old convention for what's supposed to be a modern language. At the very least, it shouldn't be a compiler error if someone wants to use something else.
Jeremy Falcon
|
|
|
|