[Cuis-dev] Other potentially missing abstract methods
Juan Vuletich
juan at jvuletich.org
Wed Apr 8 11:43:09 PDT 2026
I've just pushed some additional calls to #subclassResponsibility.
Thanks!
On 2026-04-07 4:13 PM, Facundo Javier Gelatti via Cuis-dev wrote:
> Hi Juan!
>
> Awesome! Thanks for the changes and for your review !
>
> 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!
>
> El mar, 7 abr 2026 a las 15:50, Juan Vuletich (<juan at jvuletich.org>)
> escribió:
>
> Hi Facundo,
>
> This is very good!
>
> After running these, I pushed seven change sets. Some do add the
> #subclassResponsibility call. Others refactor the code a bit.
>
> 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.
>
> There are still other candidates where adding the abstract method
> will make sense. A case by case review is needed.
>
> Cheers,
>
> On 2026-04-03 1:05 PM, Facundo Javier Gelatti via Cuis-dev wrote:
>> 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.
>>
>> 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:
>>
>> Case 1: pretty sure we should create abstract methods for these
>> 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 /all/ subclasses,
>> which /are not/ in the abstract superclass, but that /are sent/
>> from the superclass to self.
>>
>> Case 2: also pretty sure, but in classes that don't have abstract
>> methods yet
>> 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.
>>
>> Case 3: not sure, but worth checking
>> 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 /all/
>> subclasses, which are not in the abstract superclass, and that
>> are /not/ sent from the superclass to self (to avoid repeating
>> what was found in Case 1).
>> 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:.
>>
>> 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.
>>
>> I hope you find this helpful!
>>
>> Cheers,
>> Facu
>>
>>
> --
> Juan Vuletich
> www.cuis.st <http://www.cuis.st>
> github.com/jvuletich <http://github.com/jvuletich>
> researchgate.net/profile/Juan-Vuletich <http://researchgate.net/profile/Juan-Vuletich>
> independent.academia.edu/JuanVuletich <http://independent.academia.edu/JuanVuletich>
> patents.justia.com/inventor/juan-manuel-vuletich <http://patents.justia.com/inventor/juan-manuel-vuletich>
>
>
--
Juan Vuletich
www.cuis.st
github.com/jvuletich
researchgate.net/profile/Juan-Vuletich
independent.academia.edu/JuanVuletich
patents.justia.com/inventor/juan-manuel-vuletich
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20260408/a058959d/attachment-0001.htm>
More information about the Cuis-dev
mailing list