file modes

D

Daniel Berger

A post on Arc [http://arcanesentiment.blogspot.com/2008/07/arc-gets-io-ri= 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
 
M

Martin DeMello

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/IO.html>

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
 
M

Martin DeMello

A post on Arc [http://arcanesentiment.blogspot.com/2008/07/arc-gets-io-right.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.

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
 
J

Jens Wille

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
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,527
Members
44,999
Latest member
MakersCBDGummiesReview

Latest Threads

Top