今日、お客様がふとこぼされたのですが、
「いちいちnullチェックを入れていくのに労力を費やして疲弊する」
というような話を聞きました。
nullチェックってそもそも何でするのか?
単にnullポインタにアクセスすると落ちるから、とかそういう話じゃなくて、、、。
私が思うに、そもそもnullを許容するケースでなければ、毎度のnullチェックは不要だと思うのです。
要するに、処理が呼び出される前に、その変数がnullになっていないことが、事前条件なケースならば、
あくまで処理が呼び出されるまでにチェックされればいい。
C#の話だったので、
1)そもそも、nullを許容しないなら変数宣言時に new しておくべき
2)setterに nullをセットされたら、システムエラーにしてしまえば、良い
3)あとは nullチェックなしでコーディングすればいい
てなことを考えました。
それで、nullを許容しないケースって何かというと、
クラス図の関連端でみると、多重度が 0..1 ではなく、1 のもの。
あと、List<>やCollection<>やDictionary<>のようなもの、
クラス図の関連端でみると、多重度が0...* とか、1...*とかだけれど、
そもそも変数宣言は、その内容物ではなくて、コンテナの部分。
コンテナは、基本的にnullにせずに、宣言でnew しておいて、かつ、
setterは不要だよね。だから、nullにはならない。
それでもって、プロパティのxmlコメントに、利用時にnullチェック必要か不要かを書いておけば、
クイックヒントに出てきて、便利なんじゃないかな、と思いました。
これも、UMLモデルからプログラミング言語のマッピングルールにしてもいいんじゃないかな、、、。
今度、整理して、Qiitaに載せようかと思います。