About KCP and automatic initialize
Alexandre Bergel
bergel at iam.unibe.ch
Mon Sep 15 18:00:35 UTC 2003
> Nouri,
> would you agree that the _general_ Smalltalk convention in reality
> ( implementations, ANSI ) is that #new is not sending #initialize?
Squeak should move instead of being stuck.
And if it could move a bit faster...
Alexandre
>
>
> >>There will be made many mistakes by those who are not accustomed to
> >>this behavior.
> >>
> >>
> >Its just a matter of documenting/learning. New users make mistakes...
> >That's natural.
> >Note however that avoiding this mistake can be enforced by the system.
> > When you
> >redefine #new in Squeak, an notification window appears saying that
> >its "dangerous" and
> >whether this is what do you want. We can extend this comment by
> >telling about the initialisation
> >pattern.... Hence, people can *not* forget it.
> >
> >>Additionally I think it is really easy to forget about it: If one
> >>plans to use #initialize for resetting or preparing later on etc,
> >>rather than for creating, it may not come to ones mind that during
> >>creation it is called too.
> >>
> >>
> >I'd rather suggest "reset" for a method doing resets... It reflects
> >better what a such method does...
> >One should keep "initialize" for initialization...
> >
> >Any way, we can not avoid people doing silly things (bad names, bad
> >desings, ...)...
>
>
> It is even more silly to explicitly call a super method and not to
> check on what it does, and yet as you found out, it happened 2 or 3
> times even in the standard image. Now have a look how often
> #initialize is send not during creation times and you will see that
> the semantics of #initialize in reality is not what your idea is
> implying: that it is only for creation. Practically speaking, it is
> not silly to think #initialize is part of and ONLY part of creation.
>
> To pop up warning-messages to prohibit the programmer from making some
> special mistakes out of a myriad of possible mistakes does not help.
> I guess this new-warning-dialog is more confusing than helpful for a
> beginner.
>
> An initialize-warning-dialog would be unhelpful too for beginners,
> annoying for others and hmm.. an indication for a wrong design
> decision? ( why do we have to pop up warnings for every method we want
> to write? is this a bad programming language? ).
>
> Furthermore you can turn your argumentation around: If you believe in
> warnings, it may be a better idea to remind the programmer with the
> new-warning-message not to double-send #initialize.
>
> Regards
> Martin
>
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.iam.unibe.ch/~bergel
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
More information about the Squeak-dev
mailing list
|