|
Unreadable!? You may not be *used* to reading it, but don't mistake infamiliarity with anything intrinsic to the syntax. There are however some objective aspects of code: The more there is to read, the more work it is to read. The more complex the code, the more work it is. The ternary adds absolutely *no* complexity compared to a branch and is far more compact. So how can it possibly be anything but more readable?
If you know of some other alternative to the ternary, other than branching, please enlighten me.
|
|
|
|
|
don't be so upset. I just disagree with you, everybody is entitled to an opinion.
|
|
|
|
|
I'm not upset. I just found your comment ("I personally find.." with no substantiation whatsoever) stupid. I think you'll agree I'm entitled to that opinion.
|
|
|
|
|
|
I don't know why you are being flamed. I like your answer.
SS => Qualified in Submarines
"We sleep soundly in our beds because rough men stand ready in the night to visit violence on those who would do us harm". Winston Churchill
"Real programmers can write FORTRAN in any language". Unknown
|
|
|
|
|
I am familiar with the ternary. I have never liked and probably never will. I find it insufficiently readable. Also, I would like to think my opinion is not due to stupidity.
|
|
|
|
|
Are you familiar with the words obviate, relegate and denigrate? Many people aren't, but that doesn't mean that they shouldn't be used in common english language. By using words that have more meaning in them, we are able to shorten (use concision) our sentences while still conveying the same meaning.
I think the same thing applies in writing software. By using appropriate structures and controls we are able to shorten the code while still conveying the same meaning both to the compiler and the reader.
Please don't think that I am denigrating your code reading skills, I am just saying that sometimes extraneous words can be obviated.
SS => Qualified in Submarines
"We sleep soundly in our beds because rough men stand ready in the night to visit violence on those who would do us harm". Winston Churchill
"Real programmers can write FORTRAN in any language". Unknown
|
|
|
|
|
I suspose you also believe lambda expressions shouldn't be used either? They are even harder to read but shorten the amount of written code by huge degrees.
I wrote my first one today. Granted it's quite simple but its effective.
return ModifiedKeys.First(kvp => kvp.Value == id).Key;
Just to help you out, ModifiedKeys is a Dictionary<string, int="">.
This line returns the first key in my dictionary who's value matches id.
|
|
|
|
|
I can think of one reason for making it a method call. Imagine you have this all through your code, all over the place:
<br />
appendField(value ? "y" : "n", lastField)<br />
Now, someone comes along and says, 'We've just sold this to the Germans. "y" and "n" don't mean anything to them, it should be "J" and "N"'. You have to trawl through all the code, find every occurence of this (and any variations where Joe The Contractor has decided to do it his own way because that's how he's always done it in the past) and change them all to accept either Y/N or J/N depending on whether it's in German or English. The method itself could be more compact, but I would probably follow the DRY principal and put this sort of thing in a reusable method if it is being used a lot.
I have to ask: what kind of software are you writing where the overhead of a method call is such a big performance hit? I don't know your software and it's always risky to pontificate about the "right" and "wrong" way to do things when you don't know the requirements.
|
|
|
|
|
Ah, see? My Dictionary technique works with that situation too!
|
|
|
|
|
I agree with PIEBALDConsult's comment. A dictionary would work, or constants for the strings.
A function is reasonable if you just put the one line in it.
Now the question about performance hits. If performance wasn't an issue (and function calls do take extra time), why would we be on a quest for ever faster processors, and more cores. I guess I come from a era when performance was always an issue on any platform and for any processing.
We were also limited to 25 row by 80 column displays (green, amber, black and white). That's part of the reason that the wasted space bothers me so much. That one function (with the comments) would take up most of the screen.
SS => Qualified in Submarines
"We sleep soundly in our beds because rough men stand ready in the night to visit violence on those who would do us harm". Winston Churchill
"Real programmers can write FORTRAN in any language". Unknown
|
|
|
|
|
Jim (SS) wrote: A function is reasonable if you just put the one line in it.
Yes, that would make maintenance easier, and I would hope that the compiler would inline it.
Jim (SS) wrote: 25 row by 80 column displays
Your display had 25 rows? Lucky dog. I was stuck with 24, but I could select 132 columns.
|
|
|
|
|
PIEBALDconsult wrote: I was stuck with 24, but I could select 132 columns
Youngster.
Of course I forgot about the 1 line by 80 display I had before that (punchcard).
SS => Qualified in Submarines
"We sleep soundly in our beds because rough men stand ready in the night to visit violence on those who would do us harm". Winston Churchill
"Real programmers can write FORTRAN in any language". Unknown
|
|
|
|
|
Luxury. All we had was a single red light and a toggle switch.
|
|
|
|
|
You win
SS => Qualified in Submarines
"We sleep soundly in our beds because rough men stand ready in the night to visit violence on those who would do us harm". Winston Churchill
"Real programmers can write FORTRAN in any language". Unknown
|
|
|
|
|
PIEBALDconsult wrote: I would hope that the compiler would inline it
The compiler would not but the JVM might if it was declared final. Final variables might be inlined by the compiler but method calls are not. The reason is that the compiler cannot know what version of the class will be loaded at runtime, so a method which was declared final at compile time may not in fact be final at runtime. The JVM does know what version of the class is being loaded, so it can make this decision.
http://www.javaperformancetuning.com/tips/final.shtml[^]
|
|
|
|
|
Jim (SS) wrote: I guess I come from a era when performance was always an issue on any platform and for any processing.
We were also limited to 25 row by 80 column displays (green, amber, black and white). That's part of the reason that the wasted space bothers me so much. That one function (with the comments) would take up most of the screen
The worst thing I remember from those days (and please forgive me, I was young) was working with a system with twin 1Mb 8" floppies - no HDD in them days. We had to use functions to save on disk space; if the source code grew too big, there wasn't space to assemble / compile it unless...
...we removed all the comments to make enough space. Gulp.
I even wrote a utility to automate the process of deleting the comments.
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced.
This message is made of fully recyclable Zeros and Ones
|
|
|
|
|
Jim (SS) wrote: Now the question about performance hits. If performance wasn't an issue (and function calls do take extra time), why would we be on a quest for ever faster processors, and more cores. I guess I come from a era when performance was always an issue on any platform and for any processing.
I guess it depends on the kind of applications you write. I write maily web applications for financial companies these days. Most of the performance problems we hit are to do with transferring data over the internet at one end, or talking to the database at the other end. The overhead involved in a method call is pretty much negligible when compared to this. If one of my team spent time doing this sort of refactoring in our application to remove a method call, I would consider it time wasted. I wish I had a pound for every time I have seen someone fixing "performance issues" that didn't really exist.
On the other hand, if you are writing applications that are calculation intensive, or that operate in real-time or near real-time, then this could well be a useful exercise that could make a big difference.
Jim (SS) wrote: We were also limited to 25 row by 80 column displays (green, amber, black and white). That's part of the reason that the wasted space bothers me so much. That one function (with the comments) would take up most of the screen
This is a source of friction between me and our chief technical architect. He holds on to the old idea that a line of source code must never be more than 80 characters long. Why not? On a modern display, you get code (especially with generics) scrunched up onto the left of the screen spread over several lines not to violate the 80 character rule. And over on the right hand side you have a great big empty space that you're not allowed to type in. The reason: "Some people might have a display that only shows 80 characters". Oh please, when was the last time that you saw anyone actually using a 24x80 green screen terminal, and how likely is it that they will ever look at our code? But no, this is one of those cast-in-stone rules that must not be questioned.
|
|
|
|
|
I can't argue with those comments. I was just explaining why some coding practices bother me so much.
Most developers today don't even understand the concept of hard real time, where you had to account for each processor cycle. Unless you are doing embedded or 3D graphics, processing time is not a major issue.
I set my IDE to as wide and tall as I can get it, but still if I'm constantly scrolling to get the meaning of a piece of code, I prefer more compact code.
I guess code is like a gun. The best gun for you is the one you feel most comfortable with.
SS => Qualified in Submarines
"We sleep soundly in our beds because rough men stand ready in the night to visit violence on those who would do us harm". Winston Churchill
"Real programmers can write FORTRAN in any language". Unknown
|
|
|
|
|
David Skelly wrote: He holds on to the old idea that a line of source code must never be more than 80 characters long. Why not?
While displays are certainly capable of displaying more than 80 characters, there are trade-offs between maximum column width, font size, and window width. If a program is mostly written using lines that happen to be 60-80 characters long, except for a few lines that are 240 characters long, then one must either tolerate having some lines which cannot be viewed in their entirety, or else widen one's windows or shrink the font, leaving most of the right 2/3 of the window blank, so the longest lines will fit.
If different team members have different displays, it would seem entirely reasonable to have policies regarding preferred line width limits, recognizing that there are and should be some exceptions (e.g. if many lines of code are going to slightly exceed the desired width limit, it may be better to have them all be slightly too wide than to have every line split in two).
BTW, I've sometimes wished for a programming language environment that could embed formatting marks in code so that code would wrap sensibly in the editor when necessary, regardless of screen width; such marks would have to be invisible to a compiler. Once upon a time I played around with MS-Word, but that was well over a decade ago and I never really used it.
|
|
|
|
|
I'd love even having a small subset of that to stop autoformat from eating whitespace being used to line things up in a series of repetitive statements or a components of a multiline statement.
The latest nation. Procrastination.
|
|
|
|
|
supercat9 wrote: If a program is mostly written using lines that happen to be 60-80 characters long
I'm guessing that you haven't used Java generics very much.
|
|
|
|
|
David Skelly wrote: He holds on to the old idea that a line of source code must never be more than 80 characters long. Why not?
Oh, for the good old days, patiently inscribing COBOL statements on to 80 little boxes on an A3 size coding sheet, and just gazing at its perfect symmetry!
|
|
|
|
|
Richard MacCutchan wrote: Oh, for the good old days, patiently inscribing COBOL statements on to 80 little boxes on an A3 size coding sheet
...So the punch girls could mistake 'O' and '0', '1' and 'I', and just about any other letter for just about any other letter...
...Then the operators could drop the stack of cards, but run it anyway...
I had one card set returned with bits of a salad sandwich in it!
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced.
This message is made of fully recyclable Zeros and Ones
|
|
|
|
|
OriginalGriff wrote: So the punch girls could mistake 'O' and '0', '1' and 'I', and just about any other letter for just about any other letter
Good excuse to ask her out for a drink
OriginalGriff wrote: Then the operators could drop the stack of cards, but run it anyway
Yeah, we had power when I was an op.
OriginalGriff wrote: I had one card set returned with bits of a salad sandwich in it!
Probably went through the sorter first.
|
|
|
|