0

ステップワイズコードを仮定しましょう

stepWise () {
   Object a = getA ();
   Object b = getB (a);
   Object c = getC (b);
}

そのようなコードに検証を追加する必要がある場合は、それを行うための最もクリーンな方法を推奨する必要があります。

stepWise () {
  Object a = getA();
  if ( a!= null ) {
     Object b = getB(a);
     if (b! = null) {
        Object c = getC(c);
     }
  }
}

ここで唯一の問題は、追加された場合のシーケンス (getD()、getE() など) がさらに混乱を招くことです。

  1. きれいな解決策はありますか?

  2. または、それぞれの関数でパラメーターが null でないことを検証する必要がありますか?

4

1 に答える 1

0

これらのチェックをすべて実行する必要がないように、代わりにNull Objectデザイン パターンを使用することを検討してください。

あなたが持っている理由も明らかではありません:

getB(a)

とは対照的に:

a.getB();

もともと私はあなたが次のようなことをすることができると思っていました:

stepWise () {
  Object a = getA();
  Object b = getB();
  Object c = getC();

  checkNotNull(a);
  checkNotNull(b);
  checkNotNull(c);
  ...

しかし、クラスを設計した方法では、それは不可能です。

于 2013-09-27T17:38:16.990 に答える