Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #20479
| From | Arved Sandstrom <asandstrom2@eastlink.ca> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: multi-line Strings |
| References | (11 earlier) <1rfmfoqs8bzc6.4pavkn8829dk$.dlg@40tude.net> <kaogn8$jkm$1@dont-email.me> <qdrd1mgseyq1$.1upmnl6v646ec$.dlg@40tude.net> <vEXzs.27998$tG.2948@newsfe15.iad> <16v4yulqhdd19$.qhn9q6330idh$.dlg@40tude.net> |
| Message-ID | <hx6As.29492$eK6.22996@newsfe31.iad> (permalink) |
| Organization | Public Usenet Newsgroup Access |
| Date | 2012-12-18 18:57 -0400 |
On 12/18/2012 02:54 PM, Peter Duniho wrote: > On Tue, 18 Dec 2012 06:34:02 -0400, Arved Sandstrom wrote: > >> Pete, I know where you're coming from, but Eric more accurately captured >> the scenarios I was thinking of. > > His examples are exceptions to the rule, not demonstrations of a good rule. > >> Another example is the old-style and somewhat language-agnostic pseudocode >> >> round(d*100.)/100. >> >> for rounding to 2 decimal places (substitute other powers of ten for >> rounding to less or more decimal places). [*] Here there is no meaning >> for those constants other than TEN or a HUNDRED. > > Writing code like that is silly. You should use a proper "round()" method > that takes as input the number of decimal places to use. As "silly" as it may be, it's a known technique for rounding to a specified increment - see http://en.wikipedia.org/wiki/Rounding#Rounding_to_a_specified_increment. I didn't trot out the technique as an endorsement, it's an example. Forget how silly the technique is, give me a great constant name that replaces "100." in that formula. > In either case, arguably the number of decimal places to round by should be > declared itself as a constant. Writing "100" by itself tells the reader of > the code nothing about why one is rounding to two decimal places, versus > some other number. This is true whether you use a more descriptive, more > functional "round()" method or go with the "*100, /100" approach. Here's a thought - maybe _why_ you are rounding to 2 decimal places is because you want to round to 2 decimal places. No reasonable named constant is going to tell you that business requirement #17 required that the rounding be the same as an existing Excel table from spreadsheet such-and-such. I didn't just pull that out of a hat either - I've had to do exactly that the past few months. If you can come up with a named constant that doesn't look like a paragraph that can express motives like that, please trot out an example. > "Expressive code" means that the reader understands _why_ the code is > implemented the way it is, not just _how_. A literal 100 by itself used in > rounding tells the reader only _how_. > > All code always tells you _how_. Only expressive code tells you _why_. > >> As for the 100 or 400, I was thinking for example of the Gregorian day >> to Julian day number formula >> (http://en.wikipedia.org/wiki/Julian_day#Converting_Julian_or_Gregorian_calendar_date_to_Julian_Day_Number). >> You can see how many constants are involved here, including 100 and 400. > > And in every case, those constants are meaningless as literals. Naming > them allows the code to self-document. We seriously differ here. Inside a short method with a proper name there is no way that those numbers are meaningless. >> I would use named constants for precisely ZERO (0) of these numbers. >> Mainly because the Java or Perl or C# version of the method for doing >> this conversion will have a descriptive name, I will have it commented >> and include a link to a decent explanation perhaps. > > Comments get lost, go out of date, etc. Only the code is guaranteed to > remain, so it's always better to document using the code itself, rather > than external sources. Try this one on for size - the method name is also code. For this example - Gregorian date to Julian day number, or the reverse case) - a fairly short and obvious method name very accurately describes what's being done. If the comments have been removed then a reasonably intelligent programmer should be able to Google the underlying algorithm. If you're about to suggest that the method name could be mangled at some point then God help us - the same coder who does that may also rename your constants. >> If a programmer >> looks at the 365 or 100 or 400 in that complete formula and doesn't >> understand what the numbers mean then named constants won't help either >> - they have bigger problems. > > I think that's wrong. You may argue that if the programmer cannot after > sufficient thought understand what the numbers mean, then there's a > problem. But that's not the bar here. The bar is for _rapid_, unambiguous > comprehension. Names provide that while literal numbers do not. "Sufficient thought"? It's a _Gregorian date to Julian day number_ formula - how many seconds should it take a person to sort of get what most of the numbers stand for? Like 365 and 100 and 400? For that matter, follow the first link I provided and look at http://en.wikipedia.org/wiki/Julian_day#Converting_Julian_or_Gregorian_calendar_date_to_Julian_Day_Number. Please give me a concise and sensible named constant for all 13 numbers involved in the formula. Then tell me why it matters. 99 percent of programmers don't care what the exact meaning of each individual number is, and well over half won't get the math. And you think it's essential that each be a named constant? > Denigrating someone just because they didn't instantly understand what you > mean is wrong. The only "bigger problem" such a person has is the problem > that they are having to read code written by someone who didn't feel like > making it expressive enough. I believe in expressive. I think some of your philosophies, like this one here, actually make code harder to understand. >> My points are this: >> >> (1) Sometimes numbers truly have no other name; > > Wrong. We aren't naming the _numbers_ themselves. We are describing them > in a way that explains how and why they are used in the code. I happen to believe there are plenty of examples where the context provided by the code using that number, including variable and method names, does a much better job. Let me give you an example: the use of 31 in many functions for hashing strings. What are you going to nominate as a name for that particular number? > Every number you could ever use has such a description that can be > incorporated as a name. In some cases, we forego this, rather than > including things like "forLoopIncrementByOne". As I said, exceptions do > exist. > > But your rounding and calendar examples to me a clearly on the other side, > benefitting clearly from having named constants in the code rather than > just plain literals. > >> (2) Often there is context (naming, commenting, rest of the code) that >> makes it abundantly clear what a number is. > > "Abundantly clear" is in the eye of the beholder. Clearly so. AHS
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
multi-line Strings bob smith <bob@coolfone.comze.com> - 2012-12-10 08:22 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-10 11:43 -0500
Re: multi-line Strings Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-12-10 09:36 -0800
Re: multi-line Strings markspace <-@.> - 2012-12-10 09:42 -0800
Re: multi-line Strings Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-12-10 09:51 -0800
Re: multi-line Strings markspace <-@.> - 2012-12-10 10:27 -0800
Re: multi-line Strings Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-10 13:43 -0500
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-10 15:08 -0500
Re: multi-line Strings markspace <-@.> - 2012-12-10 13:05 -0800
Re: multi-line Strings Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-10 16:22 -0500
Re: multi-line Strings markspace <-@.> - 2012-12-10 13:36 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-10 16:52 -0500
Re: multi-line Strings Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-10 18:04 -0500
Re: multi-line Strings Martin Gregorie <martin@address-in-sig.invalid> - 2012-12-11 00:17 +0000
Re: multi-line Strings markspace <-@.> - 2012-12-10 17:35 -0800
Re: multi-line Strings Martin Gregorie <martin@address-in-sig.invalid> - 2012-12-11 01:56 +0000
Re: multi-line Strings markspace <-@.> - 2012-12-10 18:00 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-10 21:16 -0500
Re: multi-line Strings Martin Gregorie <martin@address-in-sig.invalid> - 2012-12-11 22:21 +0000
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-10 22:12 -0600
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-11 05:01 -0400
Re: multi-line Strings markspace <-@.> - 2012-12-11 09:46 -0800
Re: multi-line Strings Martin Gregorie <martin@address-in-sig.invalid> - 2012-12-11 22:26 +0000
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-11 16:25 -0600
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-10 21:10 -0500
Re: multi-line Strings Martin Gregorie <martin@address-in-sig.invalid> - 2012-12-11 22:31 +0000
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-14 22:30 -0500
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-15 03:35 -0600
Re: multi-line Strings "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-12-15 11:54 +0000
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-15 08:53 -0500
Re: multi-line Strings Jim Janney <jjanney@shell.xmission.com> - 2012-12-16 12:19 -0700
Re: multi-line Strings "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-12-18 13:24 +0000
Re: multi-line Strings Gene Wirchenko <genew@telus.net> - 2012-12-16 17:21 -0800
Re: multi-line Strings "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-12-18 14:03 +0000
Re: multi-line Strings Gene Wirchenko <genew@telus.net> - 2012-12-18 09:05 -0800
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-17 20:13 -0400
Re: multi-line Strings "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-12-18 13:38 +0000
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-19 19:48 -0400
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 21:07 -0500
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-19 08:26 -0600
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-19 16:36 -0500
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-21 12:51 -0600
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-21 14:05 -0600
Re: multi-line Strings "Peter J. Holzer" <hjp-usenet2@hjp.at> - 2012-12-15 18:22 +0100
Re: multi-line Strings Robert Klemme <shortcutter@googlemail.com> - 2012-12-16 00:34 +0100
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-16 02:56 -0600
Re: multi-line Strings Robert Klemme <shortcutter@googlemail.com> - 2012-12-16 14:07 +0100
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-16 13:44 -0600
Re: multi-line Strings "Peter J. Holzer" <hjp-usenet2@hjp.at> - 2012-12-16 17:43 +0100
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-19 19:37 -0500
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-10 22:03 -0600
Re: multi-line Strings Joshua Cranmer <Pidgeot18@verizon.invalid> - 2012-12-11 10:43 -0600
Re: multi-line Strings Martin Gregorie <martin@address-in-sig.invalid> - 2012-12-11 22:44 +0000
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-10 21:09 -0500
Re: multi-line Strings Sebastian <sebastian@undisclosed.invalid> - 2012-12-12 10:40 +0100
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-12 20:28 -0500
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-10 13:42 -0600
Re: multi-line Strings "William Bonawentura" <nie@ma.mnie.pl> - 2012-12-11 07:58 +0100
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-11 10:08 -0500
Re: multi-line Strings Leif Roar Moldskred <leifm@dimnakorr.com> - 2012-12-11 09:41 -0600
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-11 15:02 -0600
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-14 22:27 -0500
Re: multi-line Strings Joshua Cranmer <Pidgeot18@verizon.invalid> - 2012-12-14 23:23 -0600
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-15 02:56 -0600
Re: multi-line Strings Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-11 16:31 -0500
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-11 17:07 -0600
Re: multi-line Strings Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-12-11 15:31 -0800
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-11 19:41 -0600
Re: multi-line Strings "William Bonawentura" <nie@ma.mnie.pl> - 2012-12-13 07:43 +0100
Re: multi-line Strings Lew <lewbloch@gmail.com> - 2012-12-12 23:09 -0800
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-13 06:34 -0400
Re: multi-line Strings "William Bonawentura" <nie@ma.mnie.pl> - 2012-12-14 07:35 +0100
Re: multi-line Strings Leif Roar Moldskred <leifm@dimnakorr.com> - 2012-12-14 02:44 -0600
Re: multi-line Strings "William Bonawentura" <nie@ma.mnie.pl> - 2012-12-14 11:48 +0100
Re: multi-line Strings Leif Roar Moldskred <leifm@dimnakorr.com> - 2012-12-14 05:10 -0600
Re: multi-line Strings Lew <lewbloch@gmail.com> - 2012-12-14 15:18 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-14 22:16 -0500
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-14 05:55 -0400
Re: multi-line Strings "William Bonawentura" <nie@ma.mnie.pl> - 2012-12-14 11:50 +0100
Re: multi-line Strings Leif Roar Moldskred <leifm@dimnakorr.com> - 2012-12-14 05:12 -0600
Re: multi-line Strings Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-12-14 11:24 -0800
Re: multi-line Strings markspace <-@.> - 2012-12-14 11:47 -0800
Re: multi-line Strings Gene Wirchenko <genew@telus.net> - 2012-12-14 12:26 -0800
Re: multi-line Strings markspace <-@.> - 2012-12-14 12:53 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-14 22:36 -0500
Re: multi-line Strings "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-12-15 12:06 +0000
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-19 19:23 -0500
Re: multi-line Strings Leif Roar Moldskred <leifm@dimnakorr.com> - 2012-12-15 08:16 -0600
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-19 19:24 -0500
Re: multi-line Strings Lew <lewbloch@gmail.com> - 2012-12-15 13:36 -0800
Re: multi-line Strings Gene Wirchenko <genew@telus.net> - 2012-12-16 17:36 -0800
Re: multi-line Strings Gene Wirchenko <genew@telus.net> - 2012-12-14 12:30 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-14 22:43 -0500
Re: multi-line Strings Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-14 17:36 -0500
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-14 22:46 -0500
Re: multi-line Strings BGB <cr88192@hotmail.com> - 2012-12-16 04:29 -0600
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-17 20:45 -0400
Re: multi-line Strings Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-12-17 17:11 -0800
Re: multi-line Strings Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-17 20:25 -0500
Re: multi-line Strings Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-12-17 18:13 -0800
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-18 06:34 -0400
Re: multi-line Strings Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-12-18 10:54 -0800
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-18 18:57 -0400
Re: multi-line Strings Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-18 20:02 -0500
Re: multi-line Strings Lew <lewbloch@gmail.com> - 2012-12-18 17:13 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-19 19:35 -0500
Re: multi-line Strings Gene Wirchenko <genew@telus.net> - 2012-12-18 15:12 -0800
Re: multi-line Strings Gene Wirchenko <genew@telus.net> - 2012-12-19 10:00 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-19 19:31 -0500
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-19 19:29 -0500
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-19 20:44 -0400
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-19 21:50 -0500
Re: multi-line Strings Lew <lewbloch@gmail.com> - 2012-12-19 23:15 -0800
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-20 06:00 -0400
Re: multi-line Strings Gene Wirchenko <genew@telus.net> - 2012-12-20 08:56 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-19 19:33 -0500
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-17 21:43 -0500
Re: multi-line Strings Leif Roar Moldskred <leifm@dimnakorr.com> - 2012-12-17 22:09 -0600
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:59 -0500
Re: multi-line Strings "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-12-18 13:22 +0000
Re: multi-line Strings Leif Roar Moldskred <leifm@dimnakorr.com> - 2012-12-18 07:52 -0600
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:58 -0500
Re: multi-line Strings Gene Wirchenko <genew@telus.net> - 2012-12-18 09:10 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:56 -0500
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-18 19:05 -0400
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:42 -0500
Re: multi-line Strings Jim Janney <jjanney@shell.xmission.com> - 2012-12-17 22:18 -0700
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-17 21:46 -0500
Re: multi-line Strings Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-12-17 21:01 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:46 -0500
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-17 21:51 -0500
Re: multi-line Strings Patricia Shanahan <pats@acm.org> - 2012-12-17 19:41 -0800
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-18 19:19 -0400
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-18 20:50 -0500
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-19 05:23 -0400
Re: multi-line Strings Lew <lewbloch@gmail.com> - 2012-12-19 13:25 -0800
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-14 22:14 -0500
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-14 22:14 -0500
Re: multi-line Strings Jukka Lahtinen <jtfjdehf@hotmail.com.invalid> - 2012-12-14 23:43 +0200
Re: multi-line Strings Arne Vajhøj <arne@vajhoej.dk> - 2012-12-14 22:20 -0500
Re: multi-line Strings Arved Sandstrom <asandstrom2@eastlink.ca> - 2012-12-17 20:47 -0400
Re: multi-line Strings Jim Janney <jjanney@shell.xmission.com> - 2012-12-12 08:33 -0700
Re: multi-line Strings Lew <lewbloch@gmail.com> - 2012-12-12 11:32 -0800
Re: multi-line Strings markspace <-@.> - 2012-12-12 11:45 -0800
Re: multi-line Strings Lew <lewbloch@gmail.com> - 2012-12-15 13:33 -0800
Re: multi-line Strings Sven Köhler <remove-sven.koehler@gmail.com> - 2012-12-29 18:18 +0100
csiph-web