Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #20479

Re: multi-line Strings

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

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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