Hi Blake,

on Sun, 04 Feb 2007 10:35:33 +0100, you wrote:

On Sat, 03 Feb 2007 20:44:50 -0800, Todd Blanchard wrote:

initializeWithPoint: aPoint

        rows := (interval 1 to: aPoint x) collect: [:r | Array new: aPoint y].

Also, stylistically, is it preferred to have an instance-based initializer rather than a class-based variation on "new"?

You might want to compare:

class side>>new
        | instance |
        instance := self new.
        instance thisAndThat "extra code needed".
        ^ instance

instance side>>initialize
        "sent automatically by Behavior>>new"
        iVar1 := 'text'.
        iVar2 := 0

The latter is preferable over the former (less code, less maintenance). But often people put utility methods like #on:, #with: etc on the class side, for non-trivial initializations.

From the (re-)usability point of view, if you had getters/setters (like in traits), the perfect approach is
        x := MyClass new setY: 'text';
                setZ: 0;
                yourself.

Or, like I prefer to do it
        (x := MyClass new)
                setY: 'text';
                setZ: 0.

/Klaus

_______________________________________________
Beginners mailing list
[email protected]
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to