<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
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.<br>
<br>
Thanks,<br>
<br>
On 6/12/2019 11:07 PM, Phil B wrote:
<blockquote
cite="mid:CAMJMOejH=dR=rW6=vywzeBWQfNzDtW0rt59-WuoK0H8QhkgDtw@mail.gmail.com"
type="cite">
<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 moz-do-not-send="true"
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;">
<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 moz-do-not-send="true" class="gmail-m_3946603279149095569moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org" target="_blank">www.cuis-smalltalk.org</a>
<a moz-do-not-send="true" 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 moz-do-not-send="true" class="gmail-m_3946603279149095569moz-txt-link-freetext" href="https://github.com/jvuletich" target="_blank">https://github.com/jvuletich</a>
<a moz-do-not-send="true" 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
moz-do-not-send="true"
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 moz-do-not-send="true" class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org" target="_blank">www.cuis-smalltalk.org</a>
<a moz-do-not-send="true" 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 moz-do-not-send="true" class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-txt-link-freetext" href="https://github.com/jvuletich" target="_blank">https://github.com/jvuletich</a>
<a moz-do-not-send="true" 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>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a>
<a class="moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="moz-txt-link-freetext" href="https://github.com/jvuletich">https://github.com/jvuletich</a>
<a class="moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
@JuanVuletich</pre>
</body>
</html>