On 16 July 2018 19:42:49 BST, Stanislav Malyshev <smalys...@gmail.com> wrote:
>Hi!
>
>> I agree with you. If someone really wants to have an "uninitialized"
>field
>> on purpose, they should do that using the correct type declaration,
>i.e.:
>> 
>> ?MyType $myNullable = null;
>> 
>> When this was started I asked if it was possible to check types right
>after
>> object has been constructed, but they said it was inefficient to do
>so.
>> If this is still true, then I'm ok with checking on first access
>instead. I
>> don't want even more overhead from runtime type checking.
>> This is definitely not as bad as the "billion dollar mistake" though.
>The
>> error still happens, but in a different place.
>
>In Java, avoiding these kinds of errors - when the property is not
>initialized - is almost trivial, and that's not what "billion dollar
>mistake" is about. Lack of initialization for a final value (which is a
>frequent case with property values) is detected by the compiler, and
>most IDEs/analysis tools would alert of lack of initialization for
>non-final value too. The problem is with usage on null as a
>substitution
>for no value/error/unknown value and this value bleeding out into parts
>of the code that don't know how to handle this situation.


Fair enough.

To avoid us getting sidetracked, I retract my mistaken comparison to the 
"billion dollar mistake". It felt like a cute reference to include, but it 
didn't really help explain my point.

However, I stand by my opinion that introducing an error-on-access state for 
properties will lead to more problems than it solves, and that if we can't 
guarantee non-nullable properties are actually non-null, then we shouldn't 
allow them at all.

Regards,

-- 
Rowan Collins
[IMSoP]

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to