[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

file modes

Martin DeMello

7/10/2008 7:49:00 PM

A post on Arc [http://arcanesentiment.blogspot.com/2008/07/arc-gets-io-...]
made an excellent point - file modes are essentially exposing a low
level implementation detail for a high level feature. Would be nice to
have File.open_read, open_write and open_append (or less clunky names
if anyone can think them up; it's the principle of the thing) to
support the common cases.

martin

5 Answers

Jens Wille

7/10/2008 9:30:00 PM

0

hi martin!

Martin DeMello [2008-07-10 21:48]:
> Would be nice to have File.open_read, open_write and open_append
> (or less clunky names if anyone can think them up; it's the
> principle of the thing) to support the common cases.
just added them to ruby-nuggets [1] ;-) (sans the 'open_')

[1] <http://prometheus.rubyforge.org/ruby-nuggets/classes/I...

cheers
jens

Daniel Berger

7/10/2008 9:33:00 PM

0



On Jul 10, 1:48=A0pm, "Martin DeMello" <martindeme...@gmail.com> wrote:
> A post on Arc [http://arcanesentiment.blogspot.com/2008/07/arc-g...
ght.html]
> made an excellent point - file modes are essentially exposing a low
> level implementation detail for a high level feature. Would be nice to
> have File.open_read, open_write and open_append (or less clunky names
> if anyone can think them up; it's the principle of the thing) to
> support the common cases.

I don't agree. First, there are too many possible combinations, making
separate method names infeasible IMO. Second, tradition. Third, it's
more code (and more maintenance) for the core developers. Fourth, if
we follow that line of reasoning for other libraries (think Socket),
the API will explode.

Regards,

Dan


Martin DeMello

7/10/2008 9:37:00 PM

0

On Thu, Jul 10, 2008 at 2:29 PM, Jens Wille <jens.wille@uni-koeln.de> wrote:
> hi martin!
>
> Martin DeMello [2008-07-10 21:48]:
>> Would be nice to have File.open_read, open_write and open_append
>> (or less clunky names if anyone can think them up; it's the
>> principle of the thing) to support the common cases.
> just added them to ruby-nuggets [1] ;-) (sans the 'open_')
>
> [1] <http://prometheus.rubyforge.org/ruby-nuggets/classes/I...

Neat :) I suggested the open_ because I was wondering how you'd get
around the fact that there was already an IO.read, but your solution
looks good.

martin

Martin DeMello

7/10/2008 9:40:00 PM

0

On Thu, Jul 10, 2008 at 2:32 PM, Daniel Berger <djberg96@gmail.com> wrote:
>
>
> On Jul 10, 1:48 pm, "Martin DeMello" <martindeme...@gmail.com> wrote:
>> A post on Arc [http://arcanesentiment.blogspot.com/2008/07/arc-gets-io-...]
>> made an excellent point - file modes are essentially exposing a low
>> level implementation detail for a high level feature. Would be nice to
>> have File.open_read, open_write and open_append (or less clunky names
>> if anyone can think them up; it's the principle of the thing) to
>> support the common cases.
>
> I don't agree. First, there are too many possible combinations, making
> separate method names infeasible IMO.

The modes are still there in .open if you need them; they just aren't
exposed in the common cases.

> Second, tradition.

And if you want them :)

>Third, it's more code (and more maintenance) for the core developers.

Not that much more; it's just a few methods

> Fourth, if we follow that line of reasoning for other libraries (think Socket),
> the API will explode.

From what I've seen, that's not necessarily inconsistent with the ruby
way. Just needs good documentation.

martin

Jens Wille

7/10/2008 9:44:00 PM

0

Martin DeMello [2008-07-10 23:36]:
> Neat :) I suggested the open_ because I was wondering how you'd
> get around the fact that there was already an IO.read, but your
> solution looks good.
well, it's not completely backwards compatible, since the original
IO::read would silently take a block. but i thought aliasing it and
only behaving in the new way if a block was provided, would be ok.
so i opted for the "less clunky" names ;-)

cheers
jens