On Fri, 05 Oct 2012 05:19:13 +0100, Alex Burton <[email protected]> wrote:

On Saturday, 15 September 2012 at 17:51:39 UTC, Jonathan M Davis wrote:
On Saturday, September 15, 2012 19:35:44 Alex Rønne Petersen wrote:
Out of curiosity: Why? How often does your code actually accept null as
a valid state of a class reference?

I have no idea. I know that it's a non-negligible amount of the time, though
it's certainly true that they normally have values. But null is how you
indicate that a reference has no value. The same goes for arrays and pointers. Sometimes it's useful to have null and sometimes it's useful to know that a value can't be null. I confess though that I find it very surprising how much some people push for non-nullable references, since I've never really found null to be a problem. Sure, once in a while, you get a null pointer/reference and something blows up, but that's very rare in my experience, so I can't help but think that people who hit issues with null pointers on a regular basis are
doing something wrong.

- Jonathan M Davis

In my experience this sort of attutide is not workable in projects with more than one developer.

Almost all my work is on projects with multiple developers in C/C++ and making extensive use of null.

It all works OK if everyone knows the 'rules' about when to check for null and when not to.

As every good C/C++ developer does. The rule is simple, always check for nulls on input passed to "public" functions/methods. What you do with internal protected and private functions and methods is up to you (I use assert).

Telling team members that find bugs caused by your null references that they are doing it wrong and next time should check for null is a poor substitute for having the language define the rules.

Having language defined rules is a nice added /bonus/ it doesn't let you off the hook when it comes to being "null safe" in your code.

A defensive attitude of checking for null everywhere like I have seen in many C++ projects makes the code ugly.

That's a matter of opinion. I like to see null checks at the top of a function or method, it makes it far more likely to be safe and it means I can ignore the possibility of null from then on - making the code much cleaner.

R

--
Using Opera's revolutionary email client: http://www.opera.com/mail/

Reply via email to