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


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

Re: Blocks for scope control

From Robert Klemme <shortcutter@googlemail.com>
Newsgroups comp.lang.java.programmer
Subject Re: Blocks for scope control
Date 2012-01-21 13:25 +0100
Message-ID <9nvp52Fe8iU1@mid.individual.net> (permalink)
References <dBCQq.122$d%2.16@newsfe07.iad> <jev7op$j4k$1@news.albasani.net> <IRHQq.2650$2C.1194@newsfe20.iad> <9ni009F82hU1@mid.individual.net> <Wf3Sq.544$yi7.385@newsfe23.iad>

Show all headers | View raw


On 20.01.2012 02:16, Arved Sandstrom wrote:
> On 12-01-16 02:55 AM, Robert Klemme wrote:
>> On 15.01.2012 22:49, Arved Sandstrom wrote:
> [ SNIP ]
>
>> Regarding the method refactoring argument: if there is so much code and
>> hence so many local variables that you want to use blocks to introduce
>> smaller scopes chances are that the logic within that blocks is also
>> largely independent from the code around so it is a good candidate for
>> refactoring anyway.  The reason for refactoring into methods isn't the
>> scope but the independent logic.

> Let me give you an example. Some days prior to writing my post I had to
> write some code that processed a number of items in a similar fashion.
> Each item was a matter of 2 or 3 lines of code. In theory each process
> could have been collapsed into one very long line with multiple
> duplicated and chained method calls, rather than use temporary local
> variables, but I abhor this practice. So for clarity I kept the
> operations on each item as 2 or 3 lines of code with at least one
> temporary local variable.
>
> Although the type of the local variable was the same, the operations
> that produced it were not - they depended on the item. So any method
> that would have replaced all these individually simple simple groups of
> operations would have been either a moderately complex switch or a
> moderately complex if-else if-else structure, less easy to understand,
> and more error-prone. Furthermore, a flag would have been necessary to
> the method to indicate which branch to take.

Why _one_ method?  There could be a method for each variant, couldn't 
it?  Chances are that the same code could be used for several items so 
you end up with less methods than items.

> As you may have guessed this logic had to do with post-processing
> various String and Boolean command-line options delivered by a
> command-line processor. Quite frankly there is nothing pretty about
> this, and there never has been in any language I've ever used - all you
> can hope for is to keep the code clear, as error-free as possible, as
> change-proof as possible (one of the main reasons for me using local
> blocks actually), and just tolerate the boilerplate processing otherwise.

I agree that this boilerplate is tedious, regardless how you do it.  But 
I didn't guess that your description was about such a scenario. ;-)

> However, the intent of the thread was to get some feedback, and I thank
> you all for it.

You're welcome!

Kind regards

	robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Blocks for scope control Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-01-15 11:50 -0400
  Re: Blocks for scope control Robert Klemme <shortcutter@googlemail.com> - 2012-01-15 17:10 +0100
  Re: Blocks for scope control Robert Klemme <shortcutter@googlemail.com> - 2012-01-15 17:32 +0100
    Re: Blocks for scope control Lew <noone@lewscanon.com> - 2012-01-15 11:21 -0800
    Re: Blocks for scope control Robert Klemme <shortcutter@googlemail.com> - 2012-01-16 07:59 +0100
  Re: Blocks for scope control markspace <-@.> - 2012-01-15 09:57 -0800
    Re: Blocks for scope control Lew <noone@lewscanon.com> - 2012-01-15 11:28 -0800
  Re: Blocks for scope control Lew <noone@lewscanon.com> - 2012-01-15 11:00 -0800
    Re: Blocks for scope control Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-01-15 17:49 -0400
      Re: Blocks for scope control Lew <noone@lewscanon.com> - 2012-01-15 15:45 -0800
        Re: Blocks for scope control Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-01-19 21:54 -0400
          Re: Blocks for scope control Robert Klemme <shortcutter@googlemail.com> - 2012-01-20 08:41 +0100
            Re: Blocks for scope control Lew <noone@lewscanon.com> - 2012-01-20 15:24 -0800
            Re: Blocks for scope control Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-01-20 19:30 -0400
              Re: Blocks for scope control Lew <noone@lewscanon.com> - 2012-01-20 15:54 -0800
      Re: Blocks for scope control Robert Klemme <shortcutter@googlemail.com> - 2012-01-16 07:55 +0100
        Re: Blocks for scope control Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-01-19 21:16 -0400
          Re: Blocks for scope control Robert Klemme <shortcutter@googlemail.com> - 2012-01-21 13:25 +0100
            Re: Blocks for scope control Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-01-21 10:41 -0400
              Re: Blocks for scope control Robert Klemme <shortcutter@googlemail.com> - 2012-01-22 13:03 +0100
  Re: Blocks for scope control Roedy Green <see_website@mindprod.com.invalid> - 2012-01-16 06:09 -0800
    Re: Blocks for scope control Henk van Voorthuijsen <voorth@xs4all.nl> - 2012-01-16 07:03 -0800
  Re: Blocks for scope control Arne Vajhøj <arne@vajhoej.dk> - 2012-01-17 18:43 -0500
  Re: Blocks for scope control Lew <noone@lewscanon.com> - 2012-01-20 11:05 -0800
  Re: Blocks for scope control Gene Wirchenko <genew@ocis.net> - 2012-01-20 12:11 -0800
  Re: Blocks for scope control Arne Vajhøj <arne@vajhoej.dk> - 2012-02-06 21:24 -0500

csiph-web