The point of const, scope, and other attributes
Fry
fry131313 at gmail.com
Fri May 13 18:25:22 UTC 2022
On Wednesday, 11 May 2022 at 18:18:18 UTC, Walter Bright wrote:
> On 5/11/2022 3:48 AM, IGotD- wrote:
>> C# went the other way, no const parameters at all. Maybe
>> because it doesn't make much sense because there is a lot of
>> runtime violations of const underneath. Anyway, I like the C#
>> aproach better because it is simpler for the programmer.
>
> It's not simpler for someone trying to read the code. Function
> documentation almost never says "by the way, this `getValue`
> function also tweaks the database."
Good documentation will. Really const doesn't help with making
code more readable either. I avoided using const in D cause it
just got in the way more than it was helping. The most useful
feature for const to exist in C++ was that it allows you to do
`const T&` which will allow you to pass anything to that
function, rvalue or lvalue without making a copy. D doesn't do
this though. I think C# did the right call in excluding it, it
would have just added complexity without much benefit.
>> Another problem is that all this badging tend to get out of
>> hand and it breeds more badges until it doesn't mean anything.
>> For example what will happen if D adds a mutable attribute?
>
> It already has a mutable attribute - nothing!
I think he means a mutable attribute that allows you to modify a
value even if the object is const. Like C++'s mutable.
More information about the Digitalmars-d
mailing list