A question of style...

Discussion in 'Ruby' started by Kyle Schmitt, Jul 25, 2007.

  1. Kyle Schmitt

    Kyle Schmitt Guest

    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
    Kyle Schmitt, Jul 25, 2007
    #1
    1. Advertising

  2. Kyle Schmitt

    Guest

    On Jul 25, 11:06 am, "Kyle Schmitt" <> 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/"
    > @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
    , Jul 25, 2007
    #2
    1. Advertising

  3. Kyle Schmitt

    Kyle Schmitt Guest

    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)
    Kyle Schmitt, Jul 25, 2007
    #3
  4. Kyle Schmitt

    Guest

    On Jul 25, 11:38 am, "" <>
    wrote:
    > On Jul 25, 11:06 am, "Kyle Schmitt" <> 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/"
    > > @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


    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
    , Jul 25, 2007
    #4
  5. Kyle Schmitt

    Kyle Schmitt Guest

    On 7/25/07, <> 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.
    Kyle Schmitt, Jul 25, 2007
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Rob Nicholson
    Replies:
    3
    Views:
    722
    Rob Nicholson
    May 28, 2005
  2. Replies:
    0
    Views:
    2,455
  3. Replies:
    1
    Views:
    788
    Bertilo Wennergren
    Nov 24, 2003
  4. Hardeep Rakhra
    Replies:
    8
    Views:
    641
    Hardeep Rakhra
    Jan 15, 2004
  5. Ken Varn
    Replies:
    0
    Views:
    448
    Ken Varn
    Apr 26, 2004
Loading...

Share This Page