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

On 7/25/07, Kyle S. [email protected] wrote:

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,

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)

On Jul 25, 11:06 am, “Kyle S.” [email protected] wrote:

Because of the housekeeping & pass-by-reference being standard, @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

On Jul 25, 11:38 am, “[email protected][email protected]
wrote:

@one = pageOne(@url)
inherit from, but it seems a tad awkward. Then again so do some of
these pages have access to the cleanURL method why not just do the dup
in there rather than passing in the copy?

Ken

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 7/25/07, [email protected] [email protected] 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

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.