<div dir="ltr">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)</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 12, 2019 at 9:14 PM Juan Vuletich <<a href="mailto:juan@jvuletich.org">juan@jvuletich.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>
<div bgcolor="#ffffff">
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.<br>
<br>
Cheers,<br>
<pre class="gmail-m_3946603279149095569moz-signature" cols="72">--
Juan Vuletich
<a class="gmail-m_3946603279149095569moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org" target="_blank">www.cuis-smalltalk.org</a>
<a class="gmail-m_3946603279149095569moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="gmail-m_3946603279149095569moz-txt-link-freetext" href="https://github.com/jvuletich" target="_blank">https://github.com/jvuletich</a>
<a class="gmail-m_3946603279149095569moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
@JuanVuletich</pre>
<br>
On 6/11/2019 2:43 PM, Phil B wrote:
<blockquote type="cite">
<div dir="ltr">
<div dir="ltr">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.)</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, Jun 11, 2019 at 1:28
PM Juan Vuletich <<a href="mailto:juan@jvuletich.org" target="_blank">juan@jvuletich.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#ffffff"> On 6/10/2019 8:15 PM, Phil B wrote:
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">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' <br>
</blockquote>
</div>
</div>
</blockquote>
<br>
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.<br>
<br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_quote">
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>That said, if it really bugs you or others, I
will live without the prefix. But I do find it
helpful.</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Phil </div>
</div>
</div>
</blockquote>
<br>
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).<br>
<br>
Cheers,<br>
<pre class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-signature" cols="72">--
Juan Vuletich
<a class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org" target="_blank">www.cuis-smalltalk.org</a>
<a class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-txt-link-freetext" href="https://github.com/jvuletich" target="_blank">https://github.com/jvuletich</a>
<a class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
@JuanVuletich</pre>
</div>
</blockquote>
</div>
</div>
</blockquote>
<br>
</div>
</blockquote></div>