[Newbies] Re: A Question of Style

Klaus D. Witzel klaus.witzel at cobss.com
Sat Mar 31 03:00:14 UTC 2007


On Fri, 30 Mar 2007 18:22:22 +0200, Tim Johnson wrote:

> Hi,
>
> I know the rules for naming accessor and setter methods.  But what do I  
> do
> when the accessor method needs a parameter?  I'll try to provide an
> example.
>
> A vendor sells an item called #apple.  If I want to get the vendor's  
> price
> for that #apple, I use a method such as the following:
>
> Vendor>>priceOf: aSymbol
>
> Now, to make the setter method, I have followed this pattern:
>
> Vendor>>priceOf: aSymbol is: newPrice

I've seen the suggestions in other responses to this and I don't like them.

Calling "everything" a setter/getter seems to be J-zeitgeist but, what you  
have here is a collection of prices, indexed by a symbolic key, rooted at  
instances of Vendor.

Translated to Smalltalk language this is a variant of #at:put:

Vendor>>priceAt: aSymbol put: newPrice

Even more Smalltalk-ish, you'd have

  aVendor pricebook at: aSymbol put: newPrice

People with an education in Smalltalk will immediately understand what's  
happening when seeing a piece of your code which sends #priceAt:put:, even  
in the absence of class comments :)

/Klaus

> Does this follow traditional patterns?  I'll admit I have read the first
> half of "Smalltalk with Style" but not the second.  Should I instead make
> the setter method look like this:
>
> Vendor>>setPriceOf: aSymbol to: newPrice
>
> ?
>
> Thanks,
> Tim
>
> [PS - Thanks to everyone who has been helping me on here lately, I have
> been lax in responding.  You all bring up some good ideas and tips.]




More information about the Beginners mailing list