2023年7月2日日曜日

いいプログラマーの境目

1ヶ月ほど前に「配列のすべての要素が条件を満たすならtrueを返す」関数に空配列を渡したらtruefalseか?というツイートが話題になったそうです。

多分自分ならこういうふうに書くかな。

function kansuu(hairetu) {
  for (const youso of hairetu) {
    if (!jouken(youso)) {
      // 1つでも条件を満たさなければfalseを返す
      return false;
    }
  }
  return true;
}

なので空配列を渡したらtrueを返しちゃいますね。

そもそも本来は「仕様を(依頼元に、もしくは要求仕様から)確認し、それに応じたコードを書ける人」がいいプログラマーだと思います。

はい、ワイは良くないプログラマーです。

なお、実際のシステム云々は置いておいて数学(集合論、論理学)としての話であれば、trueが正解です。上記ストーリーのこのコメントが簡潔に表現しています。

  • 「配列のすべての要素」とは、「全N個のうちN個」である
  • 問題の関数は空配列(N=0)を許す
  • 空配列が渡された際は「全0個のうち0個」の要素が条件を満たしている
  • ゆえに、空配列が渡された際はtrueを返すべきである

0 件のコメント:

コメントを投稿