![]() 分類: プログラミングの話 日付: 2023年06月04日公開 昨日ツイートした件ですが、もう少し個人的に触れておきたかったので、ブログで書きます。独りよがりですが・・。 まず、配列を受け取る関数で空配列か、つまり java では length が 0 のときだと思いますが、そもそもそういうチェックが必要な関数は書いたことがないです。これは自分一人で書いているというのがありますが、もし空配列かをチェックしないと駄目なら膨大な関数の頭にそのチェックが入ることになります。これは非現実的です。 もし大きなプロジェクトで別の人が書いたコードから呼ばれるような場合、その人と仕様決めをします。 仕様決めとかしない場合は、正解は true みたいなのを見たのですが「空集合があらゆる集合の部分集合になるというルールに矛盾するから」という理由です。それってプログラミングを超えて数学の論理的な話の気がします。 普通に考えて、例えばですが1年間の毎月の収支が入っている配列(12個の要素)があり、それが全て正なら超優良企業と判定する関数があったとします。 そして、その関数の判定により、真が戻った際に「超優良企業である旨及び毎月の収支」を表示する機能があったとします。ここで誤って空配列を渡すケースを考えると、超優良企業と表示してしまいます。そして毎月の収支は表示できずにフリーズしたり落ちたりするでしょう。 フェールセーフで超優良企業ではないと表示し毎月の収支表示を表示せず落ちない方がシステムとして優れています。前述したように仕様決めしないのが前提です。 自分はフェールセーフは結構大事と考えている方で、フェールセーフに救われて不具合が顕著化しないで済んだことは何回かあります。 あと Twitter で「その後の処理が true を返した方がフェールセーフに働く場合のみ true。」と書いたのですが、これはあまり良くない設計だとは思います。true なのにフェールセーフはなんか直感に反します。 自分がこれをしているかはわかりませんが、false (偽) でフェールセーフの方が直感的で良いとは思います。 アプリゲーム紹介 Mocoゲーム作成で比較的人気の無料ゲーム タンク大作戦 を公開中です。Google Play 及び App Store でダウンロード可能です。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ⇒ より最新のブログ ⇒ より以前のブログ
|
最新エントリー![]()
⇒ より以前のブログ コンテンツ分類 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() カレンダー ![]() 2025年03月 ⇒ ブログカレンダー |