クリックするだけでなく、最も不適切な瞬間にクリックすることができます。 2番目のスレッドが開始された直後に、大きなファイルをコピーするプロセスの途中でクリックできます。
キャンセルは義務です
次にキャンセルボタンを追加することにしたときは、それをコミットメントと考えてください。
私の世界では、キャンセルボタンには2つの意味があります。
何かを止めますが、何も壊さないでください。
お母さん、やめて!
キャンセルボタンの動作に何度も遭遇しましたが、これはユーザーには明らかではありません。 通常、私はそれを見るたびにキャンセルボタンを突くようになり、同僚を怖がらせます。 これは、キャンセルボタンが悪意があることを確認するために行います。 そして、そうです。 ほとんどのキャンセルボタンはすぐに機能しなかったか、グローバルな変更をキャンセルしませんでした。
また、ほとんどのプログラムでは、キャンセルボタンを実装する代わりに、ロールバックの可能性なしに行われた作業の半分を完了するために、プログラムをメモリで強制終了する必要があることもわかりました。
状況を明確にする
どのボタンを念頭に置いているのかを少し説明しましょう。 これは、[OK] / [キャンセル]ダイアログに表示されるボタンではありません。 ほとんどの場合、このキャンセルボタンは機能します。戻るボタンの機能のみを実行するため、プロセスはキャンセルされません。
プロセスを完了するキャンセルボタンについて話しています。 たとえば、プログラムのインストール時またはSVNからの更新中のキャンセルボタン。
この要素を「非同期操作をキャンセルするボタン」と呼ぶことができます。
ただし、ユーザーがアクションをキャンセルできるようにする必要があります
まあ、大丈夫、ユーザーにだまされてはいけません。 原則として元に戻すことができないものがあります。
飛行機に乗っているとき、キャビンのドアがまだ閉じられていないときに旅行をキャンセルできます。 「みんなをレイプしてから飛行機を爆破する!」と叫ぶと、飛行機がストリップに転がったときに旅行をキャンセルすることさえできます。
しかし、飛行機が空中にある場合、旅行をキャンセルすることはできません。 私が試してみれば...それは悪いでしょう。 残念だ。
プログラムをアンインストールするか、プログラムがデータベースを変更し、これらの素敵な小さなキャンセルボタンが表示されたら、どうすればよいですか? いつでもクリックできますか?
もちろん違います! 当然、プロセスの一部を元に戻すことはできません。 結果は致命的であるか、ロールバックするには遅すぎます。
私見、本当に何かをキャンセルできない場合は、キャンセルできるかのようにキャンセルボタンを表示しないでください。 「申し訳ありませんが、このプロセスを今すぐキャンセルすることはできません。」
なぜキャンセルできないのかさえ知りたくありません。 つまり、キャンセルした場合、またはキャンセルボタンが無効になった(またはまったく無効になった)場合、ラージハドロンコライダーが地球を破壊できる(ユニコーンキラキラエンジンがクリティカルな状態にあり、中断すると寿命が切れる可能性がある)という知識があります見える)?
開発者に戻る
自分を責める。 私は過去にたくさんのキャンセルボタンを作成していたので、私は傷つき悲しくなりました。
しかし、開発者として何ができるでしょうか?
まず、長いプロセスが中断された場合にどうなるかを慎重に検討する必要があります。 プロセスの各ステップで、データの削除およびアプリケーションのフリーズにつながらない場合、キャンセルの可能性を提供する必要があります。 時間のかかるプロセスでは、元に戻すことができる部分、キャンセルする意味がない部分を判断する必要があります。
開発者としてのあなたの仕事は、プロセスがキャンセルされることを確実にすることであり、これは即座に行われます。 これは非常に重要です!
これは、アプリケーションおよび「キャンセル」という言葉の意味からユーザーが期待する動作です。 もちろん、これを行うには、追加の作業を行う必要があります。 長い間、アプリケーションのマルチスレッド化を熟慮する必要があるかもしれません。 ロールバックプロセスを検討するには長い時間がかかります。 しかし、そうしないと、キャンセルボタンは、 「オオカミ!」
そのような仕事をする準備ができていない場合は、キャンセルボタンをユーザーに表示しない方が良いでしょう。