適用ボタンを配置する正当な理由は 2 つしか思いつきません。
- 変更をすぐに適用することはできませんが、GUI がかなりの時間ロックされます。
- 変更は (トランザクションのように) 組み合わせてのみ意味を持ちます。
それらのどれも非常に一般的ではありません。歴史的に、1 はほとんどすべてのオプションに当てはまりました。しかし、今日のコンピュータはより高速であり、1 はほとんど関連性がありません。変更の効果がすぐにわかる場合、誰もそれを望まないでしょうか? そのため、適用ステップをスキップすることで、GUI (コードではないことが多い) を簡素化できます。ユーザーが実際にキャンセル ボタンを必要とすることもあまり一般的ではないと思います。1 つの変更を行って適用し、別の変更を行ってキャンセルを押した場合、どうすればよいですか? 最初の変更は元に戻されますか (ほとんどのアプリケーションでは、実装が簡単なため、答えはノーです)。
はいの場合、それが適用ボタンを持つポイントであり、すべてが決定され、とにかくOK/キャンセルを押しますか? それとも、ウィンドウを閉じるという別のオプションを検討する必要がありますか?
いいえの場合、基本的に適用すると、元に戻すブックマークが設定され、キャンセルが押されます。しかし、この種の複雑な動作は、実際のユースケースで本当に必要なのでしょうか?
ユーザーが期待している (と信じられている) という理由で、この種の複雑な歴史的理由を維持することは正気でしょうか? ユーザーが常に適用を押してから OK を押すのを見てきました。なんで?おそらく、GUI が複雑すぎるためです。または、「適用」が「適用して閉じるダイアログ」を意味するかどうか (一部のアプリケーションではそうです) が不明であり、OK が変更を適用しない可能性があるため (私は、OK が適用せずにウィンドウを閉じるだけのバグのあるアプリケーションを見たことがあります。もある)。少なくとも、一般のユーザーはこれらの複雑な選択肢の正確なロジックを認識していないと思います。人々は主に、「ポジティブ」(はい、OK、進む、適用する)と「ネガティブ」(いいえ、キャンセル、中止、戻る)のアクションをダイアログで区別する傾向があります。どちらかが複数ある場合、ユーザーはより多くの注意を払う必要があります。興味深いことに、ポジティブなアクションを別のアクションと交換しても、ユーザーの認識にはあまり影響がないようです。はい/いいえボタンのあるダイアログが、OK/キャンセルに変更された場合、多くのユーザーは気付かないでしょう。
それは使いやすさについてです(これははるかに重要なIMHOです)。保守性に関して言えば、即時適用は、間違って行うと非常に面倒になる可能性がありますが、適切に行うと非常にクリーンで保守しやすくなります。アプリケーションが一度にすべて適用するアプローチで作成されている場合、通常は 1 つの関数があります。もちろん、小さな変更ごとにそのような関数を呼び出すのはあまり効率的ではありません。私が見たものは、関数をいくつかの異なる関数に分割して、さまざまなものを適用することで解決されることがよくあります。理想的には、行うことができるすべての種類の変更に対して1つの専用関数です。これにより、アプリケーションの応答性が大幅に向上しますが、維持するのは大変です。だからそこに行かないでください。きちんとした解決策は、MVC (Model-View-Controller) を使用し、構成アイテムごとにモデルを作成し、それらを構成フォームのフィールドとアプリケーションの関連部分 (および構成ストレージ バック) にバインドすることです。すべての変更が自動的に保存されます)。問題の環境で MVC が使用できない場合は、MVC を作成する価値があります。