Yeah looks like you're right.  I thought it might be less work to convert
data members first to read-only rather than directly to private/protected.
So I experimented with the hdr_info field in the State struct in the
HTTPTransact class (
https://github.com/apache/trafficserver/blob/master/proxy/http/HttpTransact.h#L703
).
But I get 592 compile errors if I make it private, versus 809 if I make it
read-only with the template.

On Wed, Jun 12, 2019 at 1:45 PM Leif Hedstrom <zw...@apache.org> wrote:

>
>
> > On Jun 11, 2019, at 6:13 PM, Walt Karas <wka...@verizonmedia.com.INVALID>
> wrote:
> >
> > I'm wondering if we should add this template to our core utilities:
> > https://godbolt.org/z/4X-5wR .  We could use it to conduct a gradual
> > campaign of "creeping encapsulation", to pull up the pants of our many
> > classes with (often lots of) public data members.  If a class X had the
> > data member 'int xyz;', for example, you'd change it to 'ts:ROData<int,
> X>
> > xyz;' and compile. Read accesses of xyz would (I think) generally compile
> > fine, you'd only have to change the write accesses.
>
>
> IMO, if we’re going go through these classes and fix them (which we
> should), why not fix them properly with public/private/protected and
> getters/setters? I agree that we are too frivolous with “public” members,
> but not convinced we need to have public “RO” members (the common pattern
> being private and getter’s, no?). As a bonus, debugging getters/setter’s is
> really useful.
>
> Ciao,
>
> — Leif
>
>

Reply via email to