5 ms·
Why do people keep choosing :: over simply .? How does adding more visual noise help anyone?
by lloydatkinson 5y ago
Why do people keep choosing :: over simply .? How does adding more visual noise help anyone?
- onlyrealcuzzo 5y agoTo distinguish between an instance and a namespace? The same can be said for why do we need to put parenthesis after functions that take no parameters? So people still know it's a function.
- metaltyphoon 5y ago> To distinguish between an instance and a namespace? I’m with OP here. C# proves that . reduces the noise substantially.
- onlyrealcuzzo 5y agoI think the question should be less about ergonomics and more about does the distinction matter. I don't know enough about C# to know if it matters. From everything I know, it's a really well designed language, so I'm guessing they made the right call. It doesn't mean it's the right call everywhere.
- frou_dh 5y agoOnly somewhat related, but when reading docs/comments that mention some method `class.method`, it's annoying when that's ambiguous and could mean either a static method or an instance method. In the Ruby world, I think they have the convention of writing `class#method` in docs/comments when mentioning an instance method, and `class.method` when mentioning a static method.
- steveklabnik 5y agoFun trivia fact: I tried to bring that convention over to Rust, but enough people didn't like it than in the end, we don't do that.
- metaltyphoon 5y agoInteresting mention about the docs. I see what you mean. I have been doing C# for over a decade and I guess that after a bit you are just blind to this kind of stuff. I guess it never "really" matter to me when coding, but I can see it as an annoyance on the documentation side. Perhaps Microsoft can do a better job of splitting static methods from instances on the docs. i.e https://docs.microsoft.com/en-us/dotnet/api/system.console.writeline?view=net-6.0 https://docs.microsoft.com/en-us/dotnet/api/system.console.w...
- xigoi 5y agoBut why not use a single character? With the double colon, something like foo::bar(xyz) looks like bar is “closer” to xyz, when in fact it's closer to foo.
- torresjrjr 5y agoA single ':' is used for other things, like casting types. let x: int = 0; It's so that the compiler can distinguish between those two, and likely some other areas too.
- xigoi 5y agoA different character could be used, such as # (like in VimScript) or \ (like in… PHP?)
- torresjrjr 5y agoTrue, but :: is probably more readable than # or \ Design a language, and you'll understand that there's always trade-offs.
- xigoi 5y agoI personally find :: very unreadable, for the very reason I mentioned.
- edflsafoiewq 5y agoWhy do you want to do that? Accessing a member of a namespace is conceptually the same thing as accessing a member of an instance, and in many languages like Python or Zig its literally the same thing too.