Should you override #doesNotUnderstand: and #respondsTo: together?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Should you override #doesNotUnderstand: and #respondsTo: together?

Christoph Thiede

Hi all,


just struggled over the fact that Json objects provide access to their keys via #doesNotUnderstand:, but they do not override #respondsTo:. Example:


json := Json readFromString: '{"foo": 42}'.
json foo. "42"
json respondsTo: #foo. "false"


Question: Is this discrepancy indeed desired behavior? Or should we rather always try to override #doesNotUnderstand: and #respondsTo: together?


Best,

Christoph



Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: Should you override #doesNotUnderstand: and #respondsTo: together?

Tobias Pape

> On 31.01.2020, at 10:14, Thiede, Christoph <[hidden email]> wrote:
>
> Hi all,
>
> just struggled over the fact that Json objects provide access to their keys via #doesNotUnderstand:, but they do not override #respondsTo:. Example:
>
> json := Json readFromString: '{"foo": 42}'.
> json foo. "42"
> json respondsTo: #foo. "false"
>
> Question: Is this discrepancy indeed desired behavior? Or should we rather always try to override #doesNotUnderstand: and #respondsTo: together?

This is actually done very seldom, IIRC.
But maybe a good pattern, tho. Question is, should X class>>canUnderstand: be overwritten, too?

Best regards
        -Tobias

>
> Best,
> Christoph



Reply | Threaded
Open this post in threaded view
|

Re: Should you override #doesNotUnderstand: and #respondsTo: together?

Christoph Thiede

Question is, should X class>>canUnderstand: be overwritten, too?


This would not be possible in my example, would it? Each json object understands different keys ... This is also why I favor #respondsTo: over #canUnderstand: in general.


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Tobias Pape <[hidden email]>
Gesendet: Freitag, 31. Januar 2020 10:30:20
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Should you override #doesNotUnderstand: and #respondsTo: together?
 

> On 31.01.2020, at 10:14, Thiede, Christoph <[hidden email]> wrote:
>
> Hi all,
>
> just struggled over the fact that Json objects provide access to their keys via #doesNotUnderstand:, but they do not override #respondsTo:. Example:
>
> json := Json readFromString: '{"foo": 42}'.
> json foo. "42"
> json respondsTo: #foo. "false"
>
> Question: Is this discrepancy indeed desired behavior? Or should we rather always try to override #doesNotUnderstand: and #respondsTo: together?

This is actually done very seldom, IIRC.
But maybe a good pattern, tho. Question is, should X class>>canUnderstand: be overwritten, too?

Best regards
        -Tobias

>
> Best,
> Christoph





Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: Should you override #doesNotUnderstand: and #respondsTo: together?

Jakob Reschke
Regarding canUnderstand:, maybe it's time for the third boolean called "it depends" or "maybe". ;-)

Thiede, Christoph <[hidden email]> schrieb am Fr., 31. Jan. 2020, 10:43:

Question is, should X class>>canUnderstand: be overwritten, too?


This would not be possible in my example, would it? Each json object understands different keys ... This is also why I favor #respondsTo: over #canUnderstand: in general.


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Tobias Pape <[hidden email]>
Gesendet: Freitag, 31. Januar 2020 10:30:20
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Should you override #doesNotUnderstand: and #respondsTo: together?
 

> On 31.01.2020, at 10:14, Thiede, Christoph <[hidden email]> wrote:
>
> Hi all,
>
> just struggled over the fact that Json objects provide access to their keys via #doesNotUnderstand:, but they do not override #respondsTo:. Example:
>
> json := Json readFromString: '{"foo": 42}'.
> json foo. "42"
> json respondsTo: #foo. "false"
>
> Question: Is this discrepancy indeed desired behavior? Or should we rather always try to override #doesNotUnderstand: and #respondsTo: together?

This is actually done very seldom, IIRC.
But maybe a good pattern, tho. Question is, should X class>>canUnderstand: be overwritten, too?

Best regards
        -Tobias

>
> Best,
> Christoph






Reply | Threaded
Open this post in threaded view
|

Re: Should you override #doesNotUnderstand: and #respondsTo: together?

Christoph Thiede

When would you use this third boolean concretely? To me, this sounds rather like an overengineering solution, maybe premature optimization, for now ... :-)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Freitag, 31. Januar 2020 18:16:51
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Should you override #doesNotUnderstand: and #respondsTo: together?
 
Regarding canUnderstand:, maybe it's time for the third boolean called "it depends" or "maybe". ;-)

Thiede, Christoph <[hidden email]> schrieb am Fr., 31. Jan. 2020, 10:43:

Question is, should X class>>canUnderstand: be overwritten, too?


This would not be possible in my example, would it? Each json object understands different keys ... This is also why I favor #respondsTo: over #canUnderstand: in general.


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Tobias Pape <[hidden email]>
Gesendet: Freitag, 31. Januar 2020 10:30:20
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Should you override #doesNotUnderstand: and #respondsTo: together?
 

> On 31.01.2020, at 10:14, Thiede, Christoph <[hidden email]> wrote:
>
> Hi all,
>
> just struggled over the fact that Json objects provide access to their keys via #doesNotUnderstand:, but they do not override #respondsTo:. Example:
>
> json := Json readFromString: '{"foo": 42}'.
> json foo. "42"
> json respondsTo: #foo. "false"
>
> Question: Is this discrepancy indeed desired behavior? Or should we rather always try to override #doesNotUnderstand: and #respondsTo: together?

This is actually done very seldom, IIRC.
But maybe a good pattern, tho. Question is, should X class>>canUnderstand: be overwritten, too?

Best regards
        -Tobias

>
> Best,
> Christoph






Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: Should you override #doesNotUnderstand: and #respondsTo: together?

Jakob Reschke
*maybe* it was also a joke :-)

Thiede, Christoph <[hidden email]> schrieb am Fr., 31. Jan. 2020, 18:22:

When would you use this third boolean concretely? To me, this sounds rather like an overengineering solution, maybe premature optimization, for now ... :-)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Freitag, 31. Januar 2020 18:16:51
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Should you override #doesNotUnderstand: and #respondsTo: together?
 
Regarding canUnderstand:, maybe it's time for the third boolean called "it depends" or "maybe". ;-)

Thiede, Christoph <[hidden email]> schrieb am Fr., 31. Jan. 2020, 10:43:

Question is, should X class>>canUnderstand: be overwritten, too?


This would not be possible in my example, would it? Each json object understands different keys ... This is also why I favor #respondsTo: over #canUnderstand: in general.


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Tobias Pape <[hidden email]>
Gesendet: Freitag, 31. Januar 2020 10:30:20
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Should you override #doesNotUnderstand: and #respondsTo: together?
 

> On 31.01.2020, at 10:14, Thiede, Christoph <[hidden email]> wrote:
>
> Hi all,
>
> just struggled over the fact that Json objects provide access to their keys via #doesNotUnderstand:, but they do not override #respondsTo:. Example:
>
> json := Json readFromString: '{"foo": 42}'.
> json foo. "42"
> json respondsTo: #foo. "false"
>
> Question: Is this discrepancy indeed desired behavior? Or should we rather always try to override #doesNotUnderstand: and #respondsTo: together?

This is actually done very seldom, IIRC.
But maybe a good pattern, tho. Question is, should X class>>canUnderstand: be overwritten, too?

Best regards
        -Tobias

>
> Best,
> Christoph







Reply | Threaded
Open this post in threaded view
|

Re: Should you override #doesNotUnderstand: and #respondsTo: together?

Christoph Thiede

Hm, maybe we will never now - the crux of ternary logic ;-)


But actually, I wonder whether any of these calls to "something class canUnderstand: aSelector" is useful, shouldn't we rather replace a big part of them with "something respondsTo: aSelector"?


Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Freitag, 31. Januar 2020 18:23:19
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Should you override #doesNotUnderstand: and #respondsTo: together?
 
*maybe* it was also a joke :-)

Thiede, Christoph <[hidden email]> schrieb am Fr., 31. Jan. 2020, 18:22:

When would you use this third boolean concretely? To me, this sounds rather like an overengineering solution, maybe premature optimization, for now ... :-)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Freitag, 31. Januar 2020 18:16:51
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Should you override #doesNotUnderstand: and #respondsTo: together?
 
Regarding canUnderstand:, maybe it's time for the third boolean called "it depends" or "maybe". ;-)

Thiede, Christoph <[hidden email]> schrieb am Fr., 31. Jan. 2020, 10:43:

Question is, should X class>>canUnderstand: be overwritten, too?


This would not be possible in my example, would it? Each json object understands different keys ... This is also why I favor #respondsTo: over #canUnderstand: in general.


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Tobias Pape <[hidden email]>
Gesendet: Freitag, 31. Januar 2020 10:30:20
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Should you override #doesNotUnderstand: and #respondsTo: together?
 

> On 31.01.2020, at 10:14, Thiede, Christoph <[hidden email]> wrote:
>
> Hi all,
>
> just struggled over the fact that Json objects provide access to their keys via #doesNotUnderstand:, but they do not override #respondsTo:. Example:
>
> json := Json readFromString: '{"foo": 42}'.
> json foo. "42"
> json respondsTo: #foo. "false"
>
> Question: Is this discrepancy indeed desired behavior? Or should we rather always try to override #doesNotUnderstand: and #respondsTo: together?

This is actually done very seldom, IIRC.
But maybe a good pattern, tho. Question is, should X class>>canUnderstand: be overwritten, too?

Best regards
        -Tobias

>
> Best,
> Christoph







Carpe Squeak!