A question of style

I just had a funny thing happen.
I've got a bunch of classes that take a url for their initialize
methods, and do a little cleaning on the url, just in case.

I was setting them all up like this
@url = "http://localhost:1948/"
@one = pageOne(@url)
@two = pageTwo(@url)
@three = pageThree(@url)

Because of the housekeeping & pass-by-reference being standard, @url
ended up getting longer and longer, and strange and stranger.

I know a dozen fairly easy ways of solving this problem, but my
question is, what is the _right_ way to solve it in ruby?

I could easily do this in the SuperPage class that all the pages
inherit from, but it seems a tad awkward. Then again so do some of
the other ideas I have.

def initailize(url)
  @url=cleanURL(url.clone)
end

Thanks,
        Kyle

I just had a funny thing happen.
I've got a bunch of classes that take a url for their initialize
methods, and do a little cleaning on the url, just in case.

I was setting them all up like this
@url = "http://localhost:1948/"
@one = pageOne(@url)
@two = pageTwo(@url)
@three = pageThree(@url)

Because of the housekeeping & pass-by-reference being standard, @url
ended up getting longer and longer, and strange and stranger.

I know a dozen fairly easy ways of solving this problem, but my
question is, what is the _right_ way to solve it in ruby?

I could easily do this in the SuperPage class that all the pages
inherit from, but it seems a tad awkward. Then again so do some of
the other ideas I have.

def initailize(url)
  @url=cleanURL(url.clone)
end

It looks like your page* and cleanURL methods are in the same class as the
one you're initializing? If this is the case why not just access @url
directly in the methods, and avoid passing it to them entirely?

Thanks,

···

On 7/25/07, Kyle Schmitt <kyleaschmitt@gmail.com> wrote:

        Kyle

--
===Tanner Burson===
tanner.burson@gmail.com

I think it's more standard to use String#dup rather than clone. If all
these pages have access to the cleanURL method why not just do the dup
in there rather than passing in the copy?

Ken

···

On Jul 25, 11:06 am, "Kyle Schmitt" <kyleaschm...@gmail.com> wrote:

I just had a funny thing happen.
I've got a bunch of classes that take a url for their initialize
methods, and do a little cleaning on the url, just in case.

I was setting them all up like this
@url = "http://localhost:1948/&quot;
@one = pageOne(@url)
@two = pageTwo(@url)
@three = pageThree(@url)

Because of the housekeeping & pass-by-reference being standard, @url
ended up getting longer and longer, and strange and stranger.

I know a dozen fairly easy ways of solving this problem, but my
question is, what is the _right_ way to solve it in ruby?

I could easily do this in the SuperPage class that all the pages
inherit from, but it seems a tad awkward. Then again so do some of
the other ideas I have.

def initailize(url)
  @url=cleanURL(url.clone)
end

Thanks,
        Kyle

Tanner,
         It's not quite the point. At the moment they are being
accessed directly, bf you're going to use a clone, to ensure you don't
manipulate the var being passed in, you'd either have to do one of the
following, and that's a matter of taste.

def initialize(url)
    @url=cleanURL(url.cone)
    ....
end
or

def initialize(url)
    @url=url.clone
    cleanURL
    ....
end

def cleanURL()
    @url.gsub!(whatever)

Oh yeah and the rubyish way to do the dup in cleanURL would be like so

def cleanURL(url)
  url = url.dup
...

And then you can continue on your merry way like nothing changed.

Ken

···

On Jul 25, 11:38 am, "cardboar...@gmail.com" <cardboar...@gmail.com> wrote:

On Jul 25, 11:06 am, "Kyle Schmitt" <kyleaschm...@gmail.com> wrote:

> I just had a funny thing happen.
> I've got a bunch of classes that take a url for their initialize
> methods, and do a little cleaning on the url, just in case.

> I was setting them all up like this
> @url = "http://localhost:1948/&quot;
> @one = pageOne(@url)
> @two = pageTwo(@url)
> @three = pageThree(@url)

> Because of the housekeeping & pass-by-reference being standard, @url
> ended up getting longer and longer, and strange and stranger.

> I know a dozen fairly easy ways of solving this problem, but my
> question is, what is the _right_ way to solve it in ruby?

> I could easily do this in the SuperPage class that all the pages
> inherit from, but it seems a tad awkward. Then again so do some of
> the other ideas I have.

> def initailize(url)
> @url=cleanURL(url.clone)
> end

> Thanks,
> Kyle

I think it's more standard to use String#dup rather than clone. If all
these pages have access to the cleanURL method why not just do the dup
in there rather than passing in the copy?

Ken

That's a good option. Would it make sense though? Having it in the
initialize method makes it clear when you start reading the class, but
having it in the cleanURL method shows it to the user where it is
used...

I'm just trying to figure out which way will really be best.

···

On 7/25/07, cardboard42@gmail.com <cardboard42@gmail.com> wrote:

I think it's more standard to use String#dup rather than clone. If all
these pages have access to the cleanURL method why not just do the dup
in there rather than passing in the copy?

Ken