On Mon, Mar 4, 2019 at 8:26 AM Sven Van Caekenberghe <s...@stfx.eu> wrote:

> (1) the basic concepts are clear (and have been for a long time):
>
> - when a class initialize method is loaded, it is executed afterwards, if
> and only if the source code changed
>
> - there are startUp[:] and shutDown[:] and SessionManager to handle images
> coming up, saving and going down
>
> With these tools you can build any behaviour you want.
>
> I am not sure we need something else, except maybe more education
>
>
> (2) the problem is much larger than just the class initialize method,
> since that can call other methods (like #initializeConstants, etc, ..) -
> even if the class initialize method did not change, a method further down
> might have and could require re-initialization.
>
> For this reason I sometimes put a timestamp in a comment of the class
> initialize method to force re-initialization since I known that I added a
> new constant somewhere (much) further down.
>
>
> Complex new features might do more harm than good
>

+1000.  KISS.


>
> > On 4 Mar 2019, at 17:13, Ben Coman <b...@openinworld.com> wrote:
> >
> >
> >
> > On Mon, 4 Mar 2019 at 20:08, Norbert Hartl <norb...@hartl.name> wrote:
> >
> >
> > > Am 04.03.2019 um 03:46 schrieb Ben Coman <b...@openinworld.com>:
> > >
> > > In relation to developing sample solutions for an Exercism exercise,
> the following observation was made about class initialization...
> > >
> > > > class is initialized on load - and not when you modify it - so this
> can be very confusing for users
> > >
> > > My first thought was to wonder if Quality Assistant could track
> whether a class initialize method had been run after it was modified,
> > > and display alerts.
> > >
> > > Alternatively, I wonder if a reasonable pattern would be to couple
> class-side lazy initialization
> > > with a pragma to reset a variable when the method is saved...
> > >
> > >     MyClass class >> referenceData
> > >         <onSaveResetVariable: ReferenceData>
> > >         ^ ReferenceData := ReferenceData ifNil: [ 'reference data' ]
> > >
> >
> > Isn’t the usual way to do that to register the class in the shutdown
> list and implement #shutdown: ?
> >
> > To me a good minute to work out why I didn't understand you.
> > Sorry, I meant <onMethodSaveResetVariable: ReferenceData>
> >
> > So when 'reference data' is updated and the modified method is saved,
> > the variable gets lazy initialized *again* with the new definition.
> >
> > hope that is more clear,
> > cheers -ben
>
>
>

-- 
_,,,^..^,,,_
best, Eliot

Reply via email to