<div dir="ltr">just a small comment, with LiveTyping this is easily solved 😉 </div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Wed, Apr 8, 2026 at 3:43 PM Juan Vuletich via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st">cuis-dev@lists.cuis.st</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>
<p>I've just pushed some additional calls to #subclassResponsibility.</p>
<p>Thanks!</p>
<div>On 2026-04-07 4:13 PM, Facundo Javier
Gelatti via Cuis-dev wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>Hi Juan!</div>
<div><br>
</div>
<div>Awesome! Thanks for the changes and for your review !</div>
<div><br>
</div>
<div>PS: Also, you're right to point out that I missed to check
that the message should be sent to self in my scripts; I did
know it was necessary, but for some reason I forgot to
actually put that in the code, my bad!</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">El mar, 7 abr 2026 a las
15:50, Juan Vuletich (<<a href="mailto:juan@jvuletich.org" target="_blank">juan@jvuletich.org</a>>)
escribió:<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>
<p>Hi Facundo,</p>
<p>This is very good!</p>
<p>After running these, I pushed seven change sets. Some do
add the #subclassResponsibility call. Others refactor the
code a bit.</p>
<p>After these updates, your scripts still find many
candidates. For instance, in Case 2, it still finds
Morph>>#rotation: . But this one is ok, as the call
on #rotation: is not to self! Same happens for
LookupKey>>#value:. LookupKeys don't even have a
value at all! In Case 3, not every dialog will include
#cancel and #ok, etc.</p>
<p>There are still other candidates where adding the
abstract method will make sense. A case by case review is
needed.</p>
<p>Cheers,</p>
<div>On 2026-04-03 1:05 PM, Facundo Javier Gelatti via
Cuis-dev wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>Inspired by the email I sent about adding an
abstract method to SystemWindow, I built some scripts
to try to identify other abstract methods that are
missing.</div>
<div><br>
</div>
<div>So, I attach three scripts that find classes and
the selectors of their potentially missing abstract
methods. This is the logic for each one of them:</div>
<div><br>
</div>
<div>Case 1: pretty sure we should create abstract
methods for these
<div style="margin-left:40px"> Analyzes classes we
know are abstract (i.e. which have abstract methods,
have no instances and have at least one subclass),
selects the methods that are implemented by <i>all</i>
subclasses, which <i>are not</i> in the abstract
superclass, but that <i>are sent</i> from the
superclass to self.<br>
</div>
<br>
Case 2: also pretty sure, but in classes that don't
have abstract methods yet<br>
<div style="margin-left:40px"> Similar to Case 1, but
the classes that are analyzed don't have any
abstract method. Because the messages are sent to
self from the superclass, I strongly suspect that
these should also be implemented as abstract
methods.<br>
</div>
<br>
Case 3: not sure, but worth checking<br>
<div style="margin-left:40px"> Analyzes classes we
know are abstract (similar to Case 1, but more
constrained: the classes should have at least *2*
subclasses), selects the methods that are
implemented by <i>all</i> subclasses, which are not
in the abstract superclass, and that are <i>not</i>
sent from the superclass to self (to avoid repeating
what was found in Case 1).<br>
In this case we don't have the evidence of a message
being sent to self from the abstract class, but
having all subclasses (which are at least 2)
implement the same message from an abstract
superclass is some form of evidence. For example,
I'm pretty sure we should have an abstract method
for Boolean>>#orNot:.</div>
</div>
<div><br>
</div>
<div>Being able to decide what to do with these findings
requires domain knowledge, so I'm not saying we should
100% add all of these as abstract methods. Probably
there are better design decisions depending on
the particular cases.</div>
<div><br>
</div>
<div>I hope you find this helpful!</div>
<div><br>
</div>
<div>Cheers,</div>
<div>Facu</div>
<div><br>
</div>
</div>
<br>
<fieldset></fieldset>
</blockquote>
<pre cols="72">--
Juan Vuletich
<a href="http://www.cuis.st" target="_blank">www.cuis.st</a>
<a href="http://github.com/jvuletich" target="_blank">github.com/jvuletich</a>
<a href="http://researchgate.net/profile/Juan-Vuletich" target="_blank">researchgate.net/profile/Juan-Vuletich</a>
<a href="http://independent.academia.edu/JuanVuletich" target="_blank">independent.academia.edu/JuanVuletich</a>
<a href="http://patents.justia.com/inventor/juan-manuel-vuletich" target="_blank">patents.justia.com/inventor/juan-manuel-vuletich</a></pre>
</div>
</blockquote>
</div>
<br>
<fieldset></fieldset>
</blockquote>
<pre cols="72">--
Juan Vuletich
<a href="http://www.cuis.st" target="_blank">www.cuis.st</a>
<a href="http://github.com/jvuletich" target="_blank">github.com/jvuletich</a>
<a href="http://researchgate.net/profile/Juan-Vuletich" target="_blank">researchgate.net/profile/Juan-Vuletich</a>
<a href="http://independent.academia.edu/JuanVuletich" target="_blank">independent.academia.edu/JuanVuletich</a>
<a href="http://patents.justia.com/inventor/juan-manuel-vuletich" target="_blank">patents.justia.com/inventor/juan-manuel-vuletich</a></pre>
</div>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div style="font-size:small"><div dir="ltr"><div dir="ltr"><div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong><span style="font-size:8pt"><span style="font-size:small"><font size="2"><span style="font-weight:normal"><span style="font-weight:bold">Hernán Wilkinson</span><br>Agile Software Development, Teaching & Coaching</span></font></span></span></strong></span></div><div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong><span style="font-size:8pt"><span style="font-size:small"><font size="2"><span style="font-weight:normal">Phone: +54-011</span></font></span></span></strong></span><font face="tahoma, sans-serif" size="2">-4893-2057</font></div><div style="font-size:12.8px"><strong style="font-family:tahoma,sans-serif;font-size:xx-small"><span style="font-size:8pt"><span style="font-size:small"><font size="2"><span style="font-weight:normal">Twitter: @HernanWilkinson</span></font></span></span></strong></div><div style="font-size:12.8px"><span style="font-family:tahoma,sans-serif;font-size:xx-small;border-collapse:collapse"><strong><span style="font-size:8pt"><span style="font-size:small"><font size="2"><span style="font-weight:normal">site: <a href="http://www.10pines.com/" style="color:rgb(17,65,112)" target="_blank">http://www.10Pines.com</a></span></font></span></span></strong></span></div><div style="font-size:12.8px"><font face="tahoma, sans-serif"><span style="border-collapse:collapse">Address: Alem 896</span></font>, Floor 6, Buenos Aires, Argentina</div></div></div></div></div></div></div></div>