プログラミングのnullチェックコードに苦労している場合 | モデリングでつなぐ

モデリングでつなぐ

非エンジニアとエンジニアを含めたコミュニケーションや開発のためのモデリングの話題とその他の雑記

今日、お客様がふとこぼされたのですが、

「いちいち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に載せようかと思います。