[#29932] Happy 2002! — "Rich Kilmer" <rich@...>

Happy New Year from Washington DC!

24 messages 2002/01/01
[#29938] RE: Happy 2002! — "James Britt (rubydev)" <james@...> 2002/01/01

>

[#29954] Re: Happy 2002! — Dinakar <Desai.Dinakar@...> 2002/01/01

"James Britt (rubydev)" wrote:

[#29991] Execing command with backquotes — mail02@... (Frank Benoit)

Hi

13 messages 2002/01/01

[#30101] Ruby Weekly News rdf feed now available — Dave Thomas <Dave@...>

12 messages 2002/01/03

[#30191] chomp for arrays? — dempsejn@...

Hi All,

25 messages 2002/01/04
[#30238] Re: chomp for arrays? — adamspitz@... (Adam Spitz) 2002/01/04

How about something like this?

[#30248] Re: chomp for arrays? — Massimiliano Mirra <list@...> 2002/01/05

On Sat, Jan 05, 2002 at 04:53:14AM +0900, Adam Spitz wrote:

[#30357] snippet exchange (was: Re: Re: chomp for arrays?) — David Alan Black <dblack@...> 2002/01/06

Hello --

[#30369] Re: snippet exchange (was: Re: Re: chomp for arrays?) — "Mark Hahn" <mchahn@...> 2002/01/06

A daydream of mine is a "super-require" that if the file was not found, the

[#30401] Re: snippet exchange (was: Re: Re: chomp for arrays?) — Dan Sugalski <dan@...> 2002/01/07

At 06:31 AM 1/7/2002 +0900, Mark Hahn wrote:

[#30195] should I use ruby instead of perl — vekkuli ketkutin <qvyht@...>

simple question...

25 messages 2002/01/04

[#30265] Structs and Marshalling — Albert Wagner <alwagner@...>

I keep getting myself tripped up when I Marshal Struct objects. I typically

18 messages 2002/01/05
[#30281] Re: Structs and Marshalling — ts <decoux@...> 2002/01/05

>>>>> "A" == Albert Wagner <alwagner@tcac.net> writes:

[#30334] Re: Structs and Marshalling — Albert Wagner <alwagner@...> 2002/01/06

On Saturday 05 January 2002 06:25 am, you wrote:

[#30473] Re: [ruby-talk:30334] Re: Structs and Marshalling — matz@... (Yukihiro Matsumoto) 2002/01/07

Hi,

[#30528] Possible bug with struct.c (Re: Re: Structs and Marshalling) — ts <decoux@...> 2002/01/07

>>>>> "Y" == Yukihiro Matsumoto <matz@ruby-lang.org> writes:

[#30546] Re: Possible bug with struct.c (Re: Re: Structs and Marshalling) — nobu.nokada@... 2002/01/07

At Tue, 8 Jan 2002 02:36:12 +0900,

[#30274] The Ruby Way — "Conrad Schneiker" <schneiker@...>

Hi,

31 messages 2002/01/05
[#30275] RE: The Ruby Way — "Curt Hibbs" <curt@...> 2002/01/05

> From: Conrad Schneiker [mailto:schneiker@jump.net]

[#30276] Re: The Ruby Way — "Curt Hibbs" <curt@...> 2002/01/05

That was supposed to say "how do I implement a hash with duplicate keys?"

[#30320] Sorting a Hash by value of integer stored in the Hash — Michael Joner <finalfrontier@...>

I have a program which creates a Hash array. The ultimate result is a

14 messages 2002/01/06

[#30327] one liner / overriden class repository — "Jack Dempsey" <dabigdemp@...>

Why aim if not high? :-)

15 messages 2002/01/06

[#30366] class name reported differently in different contexts — Joel VanderWerf <vjoel@...>

30 messages 2002/01/06
[#30380] Re: class name reported differently in different contexts — "Chr. Rippel" <chr_news@...> 2002/01/06

[#30496] Re: class name reported differently in different contexts — <ale@...> 2002/01/07

On Mon, 7 Jan 2002, Chr. Rippel wrote:

[#30372] [ANN] Invitation to join LotY (Language of the Year) project, 2002: learning Haskell — David Alan Black <dblack@...>

Dear fellow programmers,

10 messages 2002/01/06

[#30431] Re: snippet exchange (was: Re: Re: chomp for arrays?) — "Jack Dempsey" <dabigdemp@...>

The way i was thinking of this working would be this: someone has heard of a

14 messages 2002/01/07

[#30461] Re: the [ruby-talk] is gone? — "Jack Dempsey" <dabigdemp@...>

Hi Matz,

13 messages 2002/01/07

[#30494] Segfault with druby and fork — Michael Witrant <mike@...>

Hello,

24 messages 2002/01/07
[#30510] Re: Segfault with druby and fork — matz@... (Yukihiro Matsumoto) 2002/01/07

Hi,

[#30543] Re: Segfault with druby and fork — Michael Witrant <mike@...> 2002/01/07

On Tue, 8 Jan 2002 00:37:14 +0900

[#30640] Re: Segfault with druby and fork — matz@... (Yukihiro Matsumoto) 2002/01/08

Hi,

[#30644] An Update on the FreeRIDE Project — "Curt Hibbs" <curt@...> 2002/01/08

I wanted to give everyone an update on where we are with the FreeRIDE

[#30655] Re: An Update on the FreeRIDE Project — bobx@... (Bob) 2002/01/08

Documentation should also be a big(?) concern. I am new to Ruby as

[#30539] RDoc Alpha-6 available — Dave Thomas <Dave@...>

37 messages 2002/01/07

[#30737] rpkg 0.1 (long) — Massimiliano Mirra <list@...>

<yaaawn>

16 messages 2002/01/10

[#30866] Dir.entries have no home — Ron Jeffries <ronjeffries@...>

Chet and I were writing a little code manager yesterday and we wrote

38 messages 2002/01/11

[#30920] MetaRuby : RubySchema.rb howto? — Tobias Reif <tobiasreif@...>

Hi,

15 messages 2002/01/11
[#30953] Re: MetaRuby : RubySchema.rb howto? — Mathieu Bouchard <matju@...> 2002/01/12

[#30969] Re: MetaRuby : RubySchema.rb howto? — Tobias Reif <tobiasreif@...> 2002/01/12

Mathieu Bouchard wrote:

[#30949] Another suggestion for FreeRIDE — ptkwt@...1.aracnet.com (Phil Tomson)

Based on some discussions over at comp.lang.python...

13 messages 2002/01/12

[#31017] Why I think Ruby will eventually be more popular than Python — gandy@... (Thomas Gandy)

Ruby and Python both play in the same niche: they're both Object

9 messages 2002/01/12

[#31080] Best way for platf. independent compression? — Massimiliano Mirra <list@...>

Currently, rpkg builds packets by tar'ring and gzip'ping the source

25 messages 2002/01/13
[#31112] Re: Best way for platf. independent compression? — Chris Gehlker <gehlker@...> 2002/01/14

On 1/13/02 1:42 PM, "Massimiliano Mirra" <list@chromatic-harp.com> wrote:

[#31153] Re: Best way for platf. independent compression? — Massimiliano Mirra <list@...> 2002/01/14

On Mon, Jan 14, 2002 at 12:08:58PM +0900, Chris Gehlker wrote:

[#31085] Small Methods - a ramble — Ron Jeffries <ronjeffries@...>

I noticed in some code that Chet and I were writing that, as Smalltalkers, we tend to write really

45 messages 2002/01/13
[#31170] Re: Small Methods - a ramble — Brian Marick <marick@...> 2002/01/14

Ron Jeffries wrote:

[#31099] a wishlist for ruby 2.0 — Mathieu Bouchard <matju@...>

49 messages 2002/01/14
[#31237] Re: a wishlist for ruby 2.0 — matz@... (Yukihiro Matsumoto) 2002/01/15

Hi,

[#31276] Re: a wishlist for ruby 2.0 — Mathieu Bouchard <matju@...> 2002/01/15

[#31251] Swig Ruby documentation mods. — Hugh Sasse Staff Elec Eng <hgs@...>

I have been trying to use Swig Ruby recently, and in attempting to

10 messages 2002/01/15

[#31262] grabbing stuff from web pages — Ron Jeffries <ronjeffries@...>

Part of my web site has recommended books. I use the cover jpegs from

11 messages 2002/01/15

[#31275] how to get all the reserved words? — Tobias Reif <tobiasreif@...>

Hi;

16 messages 2002/01/15

[#31289] memory usage question — "Mark Hahn" <mchahn@...>

I need to write a script that will use a hash with 4 million strings of 16

30 messages 2002/01/15

[#31311] Vote for Windows Installer packages — Andrew Hunt <andy@...>

14 messages 2002/01/15

[#31404] Re: A question on Ruby Threads — "Tobias DiPasquale" <anany@...>

In article <a242re$gop@ftp.ee.vill.edu>, "Chris Gehlker"

15 messages 2002/01/16

[#31424] A few words on threads — "Avdi B. Grimm" <avdi@...>

Warning: many strong personal opinions and broad

14 messages 2002/01/16

[#31442] #59 Add fsync method to IO class — hensleyl@... (Leslie Hensley)

Adding fsync and fdatasync methods to the IO class will allow Ruby to

17 messages 2002/01/16

[#31512] Hello! Array sub classing? — Markt <markt@...>

Hello Ruby lovers!

23 messages 2002/01/17

[#31533] Possible bug in Mac version? — Dave Thomas <Dave@...>

16 messages 2002/01/17

[#31564] The first alternative RDoc template — Dave Thomas <Dave@...>

22 messages 2002/01/17

[#31658] dynamic method creation — "Albert L. Wagner" <alwagner@...>

I have a need to dynamically create methods with method names

16 messages 2002/01/18

[#31711] Re: zip on Linux — "Mirabai Neumann" <webmaster@...>

19 messages 2002/01/19

[#31727] Keeping track of multiple Ruby discussion sites. — "James Britt (rubydev)" <james@...>

Recently, Massimiliano Mirra wrote:

13 messages 2002/01/19

[#31735] installing mod_ruby --> seg fault in ruby-rdtool — craig@...

At least that's where core dumped. FreeBSD/Alpha (4.4-RELEASE). New to

16 messages 2002/01/19

[#31741] $_ as default parameter for a function — thomass@... (Thomas)

I'd like the fragment below to produce "blah blah", but it doesn't

15 messages 2002/01/19

[#31882] RANT: Ruby GUI API — Sean Russell <ser@...>

I started this rant in another thread, where it was way OT, so I'm moving

60 messages 2002/01/21

[#31937] Re: RANT: Ruby GUI API — Ben Crowell <crowell02@...>

M. Mirra wrote:

28 messages 2002/01/22
[#31948] Re: RANT: Ruby GUI API — John Carter <john.carter@...> 2002/01/22

On Tue, 22 Jan 2002, Ben Crowell wrote:

[#32056] Ruby Publishing Framework v0.5.0 — Bryan Murphy <bryan@...>

Ruby Publishing Framework

15 messages 2002/01/22

[#32106] about time for seperate lists? — "Tobias DiPasquale" <anany@...>

Hi all,

12 messages 2002/01/23

[#32121] : ruby-talk seperation — "Tobias DiPasquale" <anany@...>

Hi all,

19 messages 2002/01/23

[#32177] — Eugene Scripnik <Eugene.Scripnik@...>

I have a problem loading files from my script (I mean Kernel::load):

20 messages 2002/01/23
[#32187] — nobu.nokada@... 2002/01/23

Hi,

[#32722] Re: — Eugene Scripnik <Eugene.Scripnik@...> 2002/01/29

Hello nobu,

[#32728] Re: — nobu.nokada@... 2002/01/29

Hi,

[#32793] Re[2]: — Eugene Scripnik <Eugene.Scripnik@...> 2002/01/30

Tuesday, January 29, 2002, 5:05:05 PM, you wrote:

[#32799] $: in mod_ruby — nobu.nokada@... 2002/01/30

Hi,

[#32957] Re: $: in mod_ruby — Eugene Scripnik <Eugene.Scripnik@...> 2002/02/01

Wednesday, January 30, 2002, 4:55:23 PM, you wrote:

[#32233] Subclassing vs Subtyping (partly OOP vs FP) — Robert Feldt <feldt@...>

Hi,

16 messages 2002/01/24
[#33032] Re: Subclassing vs Subtyping (partly OOP vs FP) — Dave Thomas <Dave@...> 2002/02/03

Lewis Perin <perin@panix.com> writes:

[#32247] Array.last Weirdness — Jesse Jones <jesjones@...>

I'd expect the following code:

19 messages 2002/01/24

[#32312] Serious Array Bug in Ruby 1.6.6? — William Djaja Tjokroaminata <billtj@...>

Hi,

42 messages 2002/01/24
[#32315] Re: Serious Array Bug in Ruby 1.6.6? — David Alan Black <dblack@...> 2002/01/24

Hello --

[#32400] Re: Serious Array Bug in Ruby 1.6.6? — billtj@... (Bill Tj) 2002/01/25

Hi,

[#32404] Re: Serious Array Bug in Ruby 1.6.6? — David Alan Black <dblack@...> 2002/01/25

Hello --

[#32319] looking for an example problem to demonstrate TaskMaster — ptkwt@...1.aracnet.com (Phil Tomson)

I'm looking for suggestions here...

19 messages 2002/01/24

[#32355] RDoc learns to draw pictures... — Dave Thomas <Dave@...>

15 messages 2002/01/25
[#32377] Re: [ANN] RDoc learns to draw pictures... — "Pit Capitain" <pit@...> 2002/01/25

On 25 Jan 2002, at 9:34, Dave Thomas wrote:

[#32388] Ruby Developers Guide — Robert Feldt <feldt@...>

Hi,

16 messages 2002/01/25

[#32401] Sourcecode dump? — Olivier CARRERE <carrere@...>

Hello,

12 messages 2002/01/25

[#32417] Subrange of String subclass => invalid object — "Bob Alexander" <bobalex@...>

Given these conditions:

52 messages 2002/01/25

[#32445] "friend" alternative in Ruby? — kturing@... (kate turing)

I have a class "Foo". It has a method "doSecretStuff" that I want to

13 messages 2002/01/26

[#32465] rubyzip 0.3.1 — thomass@... (Thomas)

rubyzip 0.3.1 is out.

18 messages 2002/01/26

[#32593] OT: tools for creating documentation — ptkwt@...1.aracnet.com (Phil Tomson)

I'm going to be creating a good bit of documentation for TaskMaster and I

12 messages 2002/01/27

[#32646] popen3 and buffering — Paul Brannan <paul@...>

I have a program test.rb:

26 messages 2002/01/28

Re: Small Methods - a ramble

From: Mike Thomas <mike_thomas@...>
Date: 2002-01-14 03:27:25 UTC
List: ruby-talk #31114
I find that my methods have become shorter over time, regardless of the
language or editor I'm using (I currently use vi a lot, with stints in
Together/J (talk about ends of the scale)).  In my opinion, the editor
is no "excuse" for not factoring code properly.

I used to believe in a lot of commenting, but have changed that opinion
significantly over the last few years (though I still believe in
commenting public interfaces and classes).  Fowler's /Refactoring/ book
convinced me that I was on the right path.  I loved his
observation/recommendation, that if you feel the need to put in a
comment, perhaps you should be feeling instead the need to factor the
bit of code you're commenting into a separate method, and then call it.
 Give the method a name similar to the comment you were going to
write.

As you've demonstrated, appropriately named methods really are
self-documenting, and if you keep them small and tight, you don't need
comments nearly as often.

--- Ron Jeffries <ronjeffries@REMOVEacm.org> wrote:
> I noticed in some code that Chet and I were writing that, as
> Smalltalkers, we tend to write really
> tiny methods. Here's a patch of code to show what I mean. Pay no
> attention to what it does, just
> look at how it looks.
>   
>   def filesUnderManagement
>     names = (Dir.entries(@directoryName).select { | each | ! (/.bak/
> =~ each) }).sort
>     names.reject { |each| FileTest.directory?(sourceName(each)) }
>   end
>   
>   def archiveFiles
>     Dir.entries(@directoryName + '/archive').reject { | each | /^\./
> =~ each }.sort.reverse
>   end
>   
>   def backup
>     timeString = Time.now.strftime("%Y%m%d%H%M%S")
>     filesUnderManagement.each { | each | backupFile(each,
> timeString)}
>   end
>   
>   def backupFile (fileName, timeString)
>     File.syscopy(sourceName(fileName),
> archiveName("#{fileName}.#{timeString}"))  
>   end
>   
>   def sourceName(fileName)
>     @directoryName + '/' + fileName
>   end
>   
>   def archiveName(fileName)
>     @directoryName + '/archive/' + fileName
>   end
>   
>   def restore (timeString)
>       restoreFiles(filesToRestore(timeString))
>   end
>   
>   def restoreFiles(fileList)
>     fileList.each { | each | restoreFile(each) }
>   end
>   
>   def restoreFile(fileName)
>     short = shortName(fileName)
>     File.syscopy(archiveName(fileName), sourceName(short))
>   end
>   
>   def shortName(fileName)
>     pattern.match(fileName)[1]
>   end
>   
>   def timeStamp(fileName)
>     pattern.match(fileName)[2]
>   end
>   
>   def pattern
>     /(.*)\.(.*)/
>   end
> 
> In this whole program, a code manager we're working on, the longest
> method is this:
> 
>   def findFirstOccurences(names)
>     current = ''
>     firstOccurrences = []
>     names.each do | each |
>       short = shortName(each)
>       if (short != current)
>         current = short
>         firstOccurrences << each
>       end
>     end
>     firstOccurrences
>   end
> 
> That's 12 lines long and to me it is way too long. 
> 
> I see very little Ruby code where the average method length is just
a
> couple of lines. I suspect
> it's because it's so hard to find methods in a source file that we
> instinctively have as few as
> possible. Clearly there are techniques one could use to make things
> better: we could alphabetize the
> methods or arrange them in other ways. But the problem remains.
> 
> I think that part of the power of Smalltalk comes from the fact that
> the methods are all separate. A
> Smalltalk browser has a pane listing just the method names,
typically
> alphabetically (or possibly
> grouped, alpha inside each group). When you click on a method in the
> list pane, that method appears.
> You can look at it, edit it, save it, look at another, and so on. 
> 
> At first when you use Smalltalk, it seems choppy as you have to keep
> clicking around to see what's
> going on, and in a text window you can sort of do that with your
> eyes. But take a look at these
> methods from the program we're writing. I'm not claiming that the
> names are perfect yet -- this is a
> work in progress. But read my pretend throughts below and see if you
> can get what I /like/ about
> tiny methods:
>   
>   def restore (timeString)
>       restoreFiles(filesToRestore(timeString))
>   end
> 
> hmm, OK, he does a restore by restoring all the files to restore,
> based on the time string. I wonder
> how he restores a file ...
>   
>   def restoreFiles(fileList)
>     fileList.each { | each | restoreFile(each) }
>   end
> 
> OK, he goes through them all and restores each one ... how does he
do
> that?
>   
>   def restoreFile(fileName)
>     short = shortName(fileName)
>     File.syscopy(archiveName(fileName), sourceName(short))
>   end
> 
> Oh, I see, he is copying the archived file back to the source file.
> (You have to know here that we are saving the Ruby file abc.rb as
> abc.rb.20020110164900 in our code
> manager: we've appended a time stamp to the file name. That's not
> clear here. It should be.)
> 
> I wonder how he decides which file to restore ...
> 
>   def filesToRestore(timeString)
>     findFirstOccurences(olderFiles(timeString))
>   end
> 
> OK, he takes the first occurrence of the files older than the time
> string ..
>   
>   def olderFiles(timeString)
>     archiveFiles.select { |each | timeStamp(each) < timeString }
>   end
> 
> And so on. 
> 
> Now most of us who read larger methods are used to doing the
reverse.
> We look at a big blob of code
> and figure out little chunks of it. Then maybe we comment the code
or
> make a note or just leave the
> figuring out to the next person.
> 
> Tiny methods -- when you get used to them -- are IME /much/ easier
to
> write and to work with. 
> 
> Editor-based languages like Ruby, Java, C++, encourage longer
methods
> because we have to search with
> our eyes to figure things out.
> 
> What does this mean? I don't know. I think it might mean that a
> browser for Ruby or Java or C++
> would be really good. Visual Age for Java is really wonderful in the
> hands of people who learn to
> work in the browser mode.
> 
> Or maybe ... it doesn't mean anything. The comments here will
perhaps
> tell me.
> 
> Ronald E Jeffries
> http://www.XProgramming.com
> http://www.objectmentor.com
> I'm giving the best advice I have. You get to decide whether it's
> true for you.


=====
---------------------
Mike Thomas
http://www.samoht.com
It's better backwards
---------------------

__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/

In This Thread