Re: [RFC] Readonly properties

From: Date: Tue, 08 Jun 2021 18:28:04 +0000
Subject: Re: [RFC] Readonly properties
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-114788@lists.php.net to get a copy of this message
On Tue, Jun 8, 2021, at 4:18 AM, Nikita Popov wrote:

> > (Like, for example, if one had a readonly property but wanted to convert
> > it to a custom accessor property... what are the subtle knock on effects
> > they have to account for, then?  There are almost certainly more of them
> > than if switching a property from implicit accessors to explicit accessors,
> > although off hand I don't know what they would all be.)
> >
> > > I think this is a legitimate concern to have, but (under the assumption
> > > that we can have only one) it's not easy to say which would be
> > preferable.
> > > Yes, asymmetric visibility is more widely applicable, but at the same
> > time
> > > I would expect most applications to be bonafide readonly properties. So
> > > while asymmetric visibility is more widely applicable, it's also
> > imprecise
> > > for the majority use case. Which is better? Of course, my assumption here
> > > could also be wrong.
> >
> > As above, I'd love to get some actual data from the C# community on this.
> > Lacking that, we're all just guessing.>
> 
> 
> Well, I think we can get an approximation like this:
> 
> https://beta.grep.app/search?q=%7B%20get%3B%20private%20set%3B%20%7D&filter[lang][0]=C%23
> { get; private set; } 74,281 results
> https://beta.grep.app/search?q=%7B%20get%3B%20%7D&filter[lang][0]=C%23
> {
> get; } 156,304 results
> https://beta.grep.app/search?q=readonly&filter[lang][0]=C%23
> readonly
> 409,585 results
> 
> Note that the "{ get; }" part includes both readonly properties and
> get-only abstract properties, so that one is an overestimate. Using
> variants like \{\s+get;\s+private set;\s+\} doesn't change the results
> materially.
> 
> Unless my methodology is completely borked, the ratio of readonly to
> asymmetric visibility seems to be something like 4:1 even as a conservative
> estimate.
> 
> Regards,
> Nikita

Interesting.  I have no particular grounds to challenge your methodology, so I'll accept that
C# seems to use readonly much more than asymmetric visibility/accessors.  

Does C# have a clone-with or equivalent?  Even with readonly being useful, I think it's only
half the answer without a clean evolvability mechanism beyond "re-type all the fields by
hand."  CPP removed a ton of that boilerplate, and I'd hate to bring it back.

--Larry Garfield


Thread (40 messages)

« previous php.internals (#114788) next »