1

ブール関数で明示的に「FALSEを返す」または単に「TRUEを返す」のは良いことですか

例A:

  function check($link){
  if(isset($link)){
  return TRUE;
  }else{
  return FALSE;
  }

または 例B:

  function check($link){
  if(isset($link)){
  return TRUE;
  }

デフォルトでは、php関数はFALSEを返すので、FALSEを返すと言ったり、例Bとして無視したりするとよいでしょう。

だから私がその真か偽かをチェックするなら

 if(check('eqweqw')){
  echo 'its set';
 }else{
 echo 'its not';
 }
4

4 に答える 4

2

例Aは、コードの意図を明示的に示しているため、より適切な方法です。あなたのコードを読んでいる誰かがデフォルトでFALSEが返されることを知らない場合、彼らはおそらくあなたのコードがバグだと思っているでしょう。

覚えておいてください:他の人が簡単に読んで理解できるようにコードを書いてください。

于 2012-10-11T07:51:47.757 に答える
0

trueあなたの例では、単にまたは何もしないよりも、すべての場合にブール値を返す方が良いでしょう。

これが私がそれをする方法です:

function check($link){

  $result = false;

  if(isset($link)){
     $result = true;
  }

  return $result;
}

コード内に多くのポイントを含めることは避けreturn、可能な場合は単一の出口ポイントを使用するようにしてください。

于 2012-10-11T07:55:52.730 に答える
0

マニュアルから:

注:パラメーターが指定されていない場合は、括弧を省略する必要があり、NULLが返されます。

関数に戻りたいfalse場合は、明示的にfalseを返す必要があります。nullはfalseと等しくないため、コンストラクトBは失敗する場合があります。

if(check('eqweqw') === false){
 echo 'its not';
 }else{
  echo 'its set';
 }

its setコンストラクトBに戻ります

于 2012-10-11T07:52:21.857 に答える
0

あなたはそれを次のように減らすことができます:

function check($link){
  return isset($link);
}

しかし、それはissetと機能的に同等であるように聞こえるので、代わりにそれを使用する必要があるかもしれません。ベストプラクティスの質問に関しては、PHPがissetでbool true / falseを返す場合、同じことを行うのが良いかもしれません。

于 2013-11-06T21:09:29.740 に答える