スレッド

新しいツイートを表示

会話

「メールのすべての添付ファイルが安全であれば受信箱に入れる」という処理において、添付ファイルのないメールはどうすべきかを考えれば、自然と答えがイメージしやすい
2
298
返信を表示
空の配列では常にtrueを返すべきで、大概の関数はそうなっているとは思う。 が、例外を返す関数があったとして、それはおかしい、とは自分には言えないかも。 falseは違うかなあ、という気はする。
2
53
空の配列だと全ての要素(0個)が条件を満たすからtrueなので命題の前提も配列の要素がないときの定義もクソもないだろうと思ったのだけど、大分forループがどう動くかとかのプログラムの気持ちになってますかね。配列の要素をforループで回して何かエラーがあればreturnするって構造になるからね
(´・ω・`)配列の要素の条件確認が一つも行われていないならFalseでは? (´・ω・`)ただ関数を作ると大抵Trueを返してから処理を作るのでたいていはTrueですな。 (´・ω・`)これ準正常系の考え方次第だと思うのだ。
配列の1つでも条件を満たさなければFalseを返す であれば、 空の配列は、trueを返すように組むな。 本文の文言であれば、 Falseを返すのが筋のような気がする。
JavaScriptリファレンスをみると… every() メソッド: 『このメソッドを空の配列に対して呼び出すと、無条件に true を返します。』 some() メソッド: 『このメソッドは空の配列ではあらゆる条件式に対して false を返します。』
1
67
状況によって変える必要があるのは、関数の実装ではなく、関数の扱いであるべき。 引用先、対偶の漢字間違えた…見逃して(´・ω・`)
引用ツイート
ユムル
@Yumuru_n
すべてtrue→true の待遇が falseが存在→false 空の配列にはfalseが存在しないので 元の命題に対応すればその関数はtrueを返すべきである twitter.com/fumieval/statu…
このスレッドを表示
2
29
関数名がnoErrorDetectedならtrue返すけどeveryFulfiledならどっちとも言えないですね。仕様が悪いです
関数にはロジックを閉じごめるべきで、 「全ての要素が満たす」ならtrueにすべき。 「ある要素が満たす」ならfalseにすべき。 こうしないと集合として考えた時におかしな動作になる。 空の配列の時に特定の動作を処理させたい場合は、空の配列判定をしてから特定の処理をさせる。
3
109
条件を満たさないものがあったらまずいのか、条件を満たさないものがある事が望ましいか、関数の利用目的によって実装を明確に指示するべき。あるよ、無いよ、どっちを知りたいのかって話。はっきりしないなら、両方の関数を用意するべきだと思います。
ただ何も考えずに関数作るならtrueを返す 仕様にチクりとやるならfalseを返す 同様だけど、少し親切にするなら例外スロー 作成依頼者や設計者による...w
単関数として機能を提供する側なら、False返します。 条件を満たすなら 満たすものが存在しなければ、この文言が成り立たないから。メール添付の話例が出てるけど、用途特定ならそもそも関数名が決まるし、仕様も明示されるので、後付ってだけ。 なんで境目と言えるのかな。 わからない。
2
17
「求めてる機能の仕様による」なぁ・・・ 「条件を全て満たしたものが欲しい」なら条件を一つも満たしてないからfalse。「NGが一つも無いものが欲しい」ならtrue。一律にどっちらかにはならないと思う
定義し直すは置いておいて… よく分からない時は進ませない!が無難だと思いますけどね。進まれるとデータ汚染とか、情報漏洩とか良からぬことおきそう…
エラー投げる 関数使用側が空配列になるパターンを考慮してその関数を使用する様に促すべきだと思う
設計不備で前工程に戻す、が正解やな。プログラマが勝手なことしちゃ駄目でしょ。 良いプログラマは勝手なことをしない。
どうやらこれが真の答えっぽいのでリプぶら下げておきます。
引用ツイート
ども🍈
@sore_yamete
返信先: @KeiKei47585517さん
女は...最初に「配列のすべての要素が条件を満たすならtrueを返す」関数を定義するとき、空の配列を渡したらfalseを返すかtrueを返すのか聞いて欲しいの... そして、その答えをどうすれば良いのか一緒に考えて欲しいの... それが答え...
1
23
これは何を想定していて何故Trueじゃないとダメなんですか?? 誰か教えて…全然バズってる意味がわかんない…
自分がその配列をどういう風に使いたいかによる。配列が空なら問答無用でtrue/falseのどちらかを返すなんて事はないと思います。 (仕様が決まってるなら仕様に従う)
「与えられた文字型配列の全要素が数字だった時にtrueを返す関数」を定義する時、この関数はバリデーションチェックである可能性があるので、長さゼロの配列でtrueを返すと決めつけてしまうのは良くないプログラマですね。
基本的には関数名を何にするか、その名前としてどの動作が自然なのは何かによって決まるべきだろう 判断の根拠は関数名の英語における意味による プログラミングは人間が理解できるように書くものなので
基本的にはtrueなんだろうけどfalseの方がロジック組みやすいとかない?
引用ツイート
ふみ a.k.a.DJ Monad
@fumieval
「配列のすべての要素が条件を満たすならtrueを返す」関数を定義するとき、空の配列を渡したらfalseを返すかtrueを返すかが、良いプログラマかどうかの一つの境目だ
このスレッドを表示
関数の要求仕様次第だと思います。 「条件を満たす/条件に反する配列であるかをチェックする」関数なら、該当なしで、false、0、フラグOFFを返す。 「空配列も含めて、条件に反する要素をチェックする」関数ならtrue、1、フラグONを返す。
その決めつけは良くないと思いますね。 その配列の要素が一つ以上入ってくるなら、falseにすべきでしょうし。 0の可能性があってそれが可なら、問うまでもなく、trueしか有り得ないですし。
その条件が例えば「特定のインタフェースを実装したクラスのインスタンスであること」だった場合どうすべきかを考えれば、自然と答えがイメージしやすい。 要するに条件次第です。
だいたいはtrueだと思うけど、すべての条件を満たし、かつ要素が1つ以上という条件ならfalse(文にするとあたりまえだけど) たとえば、有効な証明書が1つ以上必要なとき。 複合条件だからtrueでもヨシと考えられるけど、1つ以上という条件が明示されていないと気づかないでバグになる可能性がある。
いわゆるVacious Truth現象ですね。数学か関数型プログラミングをかじると、trueを返すことに納得がいくようになるように思います(自分は非直感的だと思っていたけどそのうち納得するようになった)。
1
42

Twitterを使ってみよう

今すぐ登録して、タイムラインをカスタマイズしましょう。
Appleのアカウントで登録
アカウントを作成
アカウントを登録することにより、利用規約プライバシーポリシーCookieの使用を含む)に同意したとみなされます。

トレンド

いまどうしてる?

日本のトレンド
ノーパンしゃぶしゃぶ
5,842件のツイート
日本のトレンド
#西洸人_26歳への扉をKnock4
トレンドトピック: #HAPPYHIROTODAY
日本のトレンド
身長165cm
トレンドトピック: 視力0.1
テーブルゲーム · トレンド
#BSJapanext
日本のトレンド
ドラフト指名
2,265件のツイート