Re: Coding standards proposal, usage of "this"

Andrew Burgess
2021-08-13T14:47:52Z

* Simon Marchi via Gdb-patches <gdb-patches@sourceware.org> [2021-08-13 10:26:48 -0400]:

> Hi all,
>
> Here's something I had in mind for a while. We don't consistently use
> `this` when referring to fields or methods of the current object. I
> never now if I should use it or not, or point it out in review. I
> therefore propose these rules so that we have something to refer to.
>
> - Use `this` when referring to a data member that is not prefixed by
> `m_`. Rationale: without `this`, it's not clear that you are
> referring to a member of the current class, versus a local or global
> variable.
> - Don't use `this` when referring to a data member that is prefixed by
> `m_`. Rationale: the prefix already makes it clear that you are
> referring to a member of the current class, so adding `this` would
> just add noise.
> - Use `this` when referring to a method of the current class.
> Rationale: without `this, it's not clear that you are referring to a
> method of the current class, versus a free function.
>
> If we had a convention for how to name internal helper methods, which
> would make it clear that they are methods of the current object and not
> free functions (a bit like `m_` does for data members), we could omit
> `this` when calling such a method. But we don't have that at the
> moment.

I'd be OK with extending the use of the m_ prefix for private member
functions. But that wouldn't change the above rules, which all make
sense to me.

Thanks,
Andrew

>
> A concrete example:
>
> int a_global;
>
> struct a_struct
> {
> int a_method ()
> {
> int a_local = 17;
>
> return (a_local
> + a_global
> + m_a_private_field
> + this->a_public_field
> + this->a_helper_method ());
> }
>
> int a_public_field;
>
> private:
> int a_helper_method ()
> {
> return m_a_private_field;
> }
>
> int m_a_private_field;
> };
>
> Any comments? My intention would be to add this to the coding standards
> on the wiki.
>
> Simon