<!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>