[Cuis-dev] Why can't you send to super on private (pvt*) methods?
Juan Vuletich
juan at jvuletich.org
Thu Jun 13 05:05:02 PDT 2019
Just pushed a change to use a different prefix 'initializePvt' for
initialization of immutable objects. Please, help us find a better one.
Using 'pvtInitialize' as prefix is not only bad because it clashed with
Phil's code, but because 'pvt' is a prefix of it, making it confusing
and error prone.
Thanks,
On 6/12/2019 11:07 PM, Phil B wrote:
> Heh... well ya broke my code! I have a class side send to self
> pvtInitialize* which now results in 'Private instance initialization
> messages may only be sent to ''self new'' or "self basicNew" (by class
> instance creation methods)' (i.e. self pvt* is valid instance *or*
> class side)
>
> On Wed, Jun 12, 2019 at 9:14 PM Juan Vuletich <juan at jvuletich.org
> <mailto:juan at jvuletich.org>> wrote:
>
> The last bunch of updates done today enable sending `super
> pvtMessage`. I also added a new, related way for initializers.
> Now, an instance creation method can do 'self new
> pvtInitializeStuff' or 'self basicNew pvtInitializeStuff', but no
> one else can call #pvtInitializeStuff. As a first example, I
> finally was able to make Point almost immutable. Please check it.
>
> Cheers,
>
> --
> Juan Vuletich
> www.cuis-smalltalk.org <http://www.cuis-smalltalk.org>
> https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
> https://github.com/jvuletich
> https://www.linkedin.com/in/juan-vuletich-75611b3
> @JuanVuletich
>
>
> On 6/11/2019 2:43 PM, Phil B wrote:
>> Ah, then count me as a firm 'yes' vote! I've been in favor of
>> that forever as I agree making things explicitly pvt* removes any
>> possible misinterpretation. The only problem is that many
>> (most?) the senders of those set* methods tend to come from
>> class-side so pvt* visibility would have to extend there as well
>> for this to work. (What I tend to do currently for those cases in
>> my code currently is use a private* prefix.)
>>
>> On Tue, Jun 11, 2019 at 1:28 PM Juan Vuletich <juan at jvuletich.org
>> <mailto:juan at jvuletich.org>> wrote:
>>
>> On 6/10/2019 8:15 PM, Phil B wrote:
>>>
>>> Why do you think the #privateSetX:setY: looks silly? I
>>> think it's a decent placeholder that I read as saying
>>> 'we really want this to be immutable and are indicating
>>> this as private to reflect that fact until we can
>>> actually make it immutable via the VM'
>>>
>>
>> Because the comment begs you not to call it. If we just add
>> the pvt prefix, then it is way more robust. You need to add a
>> new method to set the ivars, and clearly you are on your own
>> then.
>>
>>>
>>> Private categories are good for getting methods out of the
>>> way in the main browser but I'm not wild about them beyond
>>> that. The main issue I have with private categories is that
>>> they are so easy to overlook in the browsers. For example,
>>> if you're in the message finder and you do a search on
>>> 'set', the fact that it shows up as private* makes it very
>>> clear that it's not a method you should be using generally.
>>> If the private prefix were removed, you'd have to be sure to
>>> select an implementor in the right pane (and hope that they
>>> are consistently categorized) and then be sure to look for
>>> the category buried in the method annotation below (which
>>> might be 'private' or 'private - someSubCategory' etc)...
>>> ugh! Or if you see a raw selector (i.e. #setX:setY:) in
>>> code now you have to do the above as opposed to just looking
>>> at the selector name.
>>>
>>> That said, if it really bugs you or others, I will live
>>> without the prefix. But I do find it helpful.
>>>
>>> Thanks,
>>> Phil
>>
>> I'm suggesting the opposite! To start adding the pvt prefix
>> to methods we intend to be private (i.e. those already in a
>> 'private*' category).
>>
>> Cheers,
>>
>> --
>> Juan Vuletich
>> www.cuis-smalltalk.org <http://www.cuis-smalltalk.org>
>> https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
>> https://github.com/jvuletich
>> https://www.linkedin.com/in/juan-vuletich-75611b3
>> @JuanVuletich
>>
>
--
Juan Vuletich
www.cuis-smalltalk.org
https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
https://github.com/jvuletich
https://www.linkedin.com/in/juan-vuletich-75611b3
@JuanVuletich
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20190613/5d125e2b/attachment.htm>
More information about the Cuis-dev
mailing list