On Thursday, 14 January 2021 at 20:35:49 UTC, Dennis wrote:
On Thursday, 14 January 2021 at 18:24:44 UTC, ddcovery wrote:
If it's not a bother, I'd like to know how you usually approach it

Usually I don't deal with null because my functions get primitive types, slices, or structs. `ref` parameters can be used to replace pointers that may not be null.
When something is nullable by design, I usually do this:

```
if (!person) {
    return; // early return if possible
}
if (auto f0 = person.father) {
    if (auto f1 = f0.father) {
       if (f1.name == "Peter") {
           doSomething();
       }
    }
}
```

It doesn't matter whether you're working with a class, pointer, or struct with opCast, this works. When access patterns get complex the nesting may get very deep. Only if you can't avoid this I would consider using fancy helper functions, otherwise just use an if-statement or the && operator.
I agree: using null safety is a sign of something wrong in the design (the need of dealing with nulls)... but if eventually you need it, simple **if** or **&&** should be enough.

Curiously, languages like Dart (and its flutter framework) performs extensive use of null safety (null is everywhere!!!) and it seems that every "modern" language must deal with it.

Any case, I'm learning a lot: thank you Dennis for sharing!!!

Reply via email to