Hacker News new | past | comments | ask | show | jobs | submit login

I know it's a tradeoff but I think I fall on the side of I wish the language I was writing in required `this` or `self` for members/properties.

C++

    foo = bar \* 2;
Are foo and bar local variables or members of some instance?

vs

Python

    self.foo = self.bar \* 2
100% clear. No naming convention needed.

I bring this up because `_foo` for members is a naming convention that wouldn't be needed in a language that required `self` or `this`

That said, I get that maybe refactoring some code from standalone function to class method is easier if you don't have to change the code as much but I'd be curious how often that's a net win.




As a language design point it's also saying that (this simple modification to C++)

    void add(const this, int x)
Is more readable than (IMO)

    void add(int x) const


Might as well just always spell out the hidden "this" argument. Then all methods would look just like regular functions, allowing to simplify the language syntax and the standard, making it more concise and consistent, without sacrificing any functionality.


You may like the "deducing this" proposal: http://wg21.link/P0847

(Scroll down to the "proposed syntax" section.)


That can go both ways?

I agree that I like when functions are not special so

   instance.add(10)
Is just sugar for

   add(instance, 10)
and you pass anything that fits as the first argument.

But, following the "syntactic sugar" is okay rule

    class Foo {
      add(int v);
    }
Is just syntactic sugar for

    void Foo.add(Foo this, int v);
... or something along those lines... ?


When writing idiomatic C++, you typically end up with mostly stuff like impl->foo anyway.

The pimpl pattern is sort of a weird artifact of how the compiler works, but it generally works out as a smart way to structure your code.


It really depends. I used PImpl today but it’s the rare exception. Between small inlinable classes and abstract base classes, there are lots of ways work. But that’s the beauty of C++: there are lots of ways to solve problems!


I worked with C++ at my last job and now again for a side project with a partner. People not using `this` is one of my biggest pet peeves.


This.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: