パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

スラドに聞け:私的「バッドデザイン大賞」は?」記事へのコメント

  • ハードウェアもソフトウェアもダメですね。
    屋内の壁についている一般的なシーソー型のスイッチで、どちらかを押すとONになって、反対側が出っ張るというもの。
    操作後は、ステート(ON)の状態を維持するので役目としてはチェックボックスとも言えます。で、今の状態がどのステートかが分からない。
    こないだは「〇」「-」がスイッチの両端に印刷してあるのですが、結局何をおしたらエンジン始動可能状態なのか、今すでにONなのかが分かりませんでした。
    部屋の電灯スイッチだとスイッチ自体が発光するものがありますが「もしかして発光状態=電灯ONか?」とも考えられます。エレベーターのスイッチのように。
    スマホの UI ではとうとうon状態では色を変えて "ON" と文字で表示したりするようになりましたね。ここまできた・・。スティック式のトグルスイッチだとアナログで同様の工夫がされたものがありますね。シャッターの下のONという文字が見えるようになるやつ。これが最終系か。

    類似の難しいUI問題として蛇口があります。どちらにひねったらお湯か?赤い印があるほうにひねるのか?です。

    • たしかに、「On」「Off」と明記すれば紛らわしくないのに、「〇」「-」なんですよね。不思議です。

      • by Anonymous Coward

        それはゼロとイチです。ISOで決まってるんです。

        • 0がfalseで1がtrueって、まるでC言語ですね。

          親コメント
          • by Anonymous Coward

            情報量1ビットだから…

          • by Anonymous Coward

            ふつう非零がtrueじゃないの?

            • ふつう非零がtrueじゃないの?

              解釈時はそのとおりですが、
              生成時はtrueは1です。
              つまり、 !0 == 1 固定です。
              !0 == 2 となるような処理系は無いはずです。したがって、
               !!2 == !(!2) == !0 == 1
               !!1 == !!2 == !!3 == 1
               !!0 == 0

              親コメント
              • by Anonymous Coward
                BASICはtrueが-1だけどVBとC(とかC#)を相互運用するときバグの温床にならないのかな…
              • by Anonymous Coward

                仲間はずれを探せ!

                #define FALSE (0)
                #define TRUE (!0)
                int x;

                ① if ( x )
                ② if ( x != FALSE )
                ③ if ( x == TRUE )
                ④ if ( !(x == FALSE) )

                #気づきにくいバグの種になる奴

              • C言語で論理式の評価には、defineした TRUE / FALSE と比較しろというコーディングルールがあったりします。
                このやり方では、外部の関数が出したの論理値の評価に TRUE,FALSE を用いると、出題どおりのバグが起きて危険なので、
                if ((命題) != FALSE) / if ((命題) == FALSE) としなければなりません。
                かえってわかりにくいです。

                ここは論理式の評価は if (命題) / if !(命題) の形式で統一したほうが、結局のところ、シンプルでわかりやすいと思います。
                初めからboolean型が組み込まれている言語に慣れ親しんだ人には抵抗があるかもしれませんが。

                親コメント
              • by Anonymous Coward
                if(条件)をif((条件)!=FALSE)と書く人は、 当然にif((条件)!=FALSE)をif(((条件)!=FALSE)!=FALSE)と書き、if(((条件)!=FALSE)!=FALSE)を…と永久に続くのではないだろうか
              • そこはそれ switch(命題) { case TRUE: ; case FALSE: ; default: } にして驚かせてみるとか。
                親コメント

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

処理中...