[Cuis-dev] Why can't you send to super on private (pvt*) methods?
Juan Vuletich
juan at jvuletich.org
Wed Jun 12 18:14:49 PDT 2019
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
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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20190612/fa6019fe/attachment.htm>
More information about the Cuis-dev
mailing list