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