web-dev-qa-db-ja.com

非技術的なエンドユーザーに「循環参照」を説明する

循環参照を説明するためのシンプルで直感的な言語についてアドバイスしてください。 UIから親エンティティに子を追加するとうまくいく状況があります。循環参照を防止し、その状況では操作を完了できないことをユーザーに伝えます。それがエラーである理由を彼らに伝える方法は?

私の現在のメッセージは:

アイテムが直接または間接的に自分自身に追加されるため、操作を完了できませんでした。

より良いアイデアはありますか?

GMailが問題の良い例を提供しました。 ;)

Circular Reference

23
xanadont

ユーザーのタスクに合わせて、よりクリアなテキストを使用できますか? 「操作」-ユーザーは操作を知っていますか?カートにアイテムを追加したり、アイテムをカテゴリに整理したりしていますか?エラーメッセージに操作を記述することで、より明確になる場合があります。

また、多分あなたはあなたの子供/親オブジェクトが何であるかについてより具体的になるように動詞を変更することができます。ユーザーは、実行しているタスクのコンテキストが明確でない場合、親子関係を理解できない場合があります。

11
Jessica

問題を簡単に述べ、次に問題を説明します-簡単に。

例えば:

このアクションの結果、循環参照になります。

循環参照は、アクション自体に依存する情報をアクションが使用する場所です。

Microsoft Excelはこれを実行しますが、通常は冗長な方法です。

enter image description here

どの操作が無効であったかを明示的に示すことは理にかなっていますが、循環参照を形成するcircleは、いわば可変直径を持つことができます。そのような場合、ユーザーが賢明に理解して将来の機会のために覚えることができるという点で、何が問題であったかを判断または説明することは、不可能ではないにしても難しいかもしれません。

いずれの場合でも、循環参照を生成する可能性を判断するためにアクションを分析する必要があるのは、ユーザーの責任ではありません。問題を簡単に述べる方がはるかに良いので、そのようなことができることをユーザーに知らせ、その過程で、友好的な方法でそれらを保証します製品はそれらの状況を検出し、それが発生するのを防ぎ、ユーザーがそれを心配する必要がないことを示します。

詳細については、「 この回答 」を参照してください。

27
Roger Attrill

ダイアログでXzibitの画像を使用します。 「ヨードウ…操作は好きだと聞きましたが、操作中に操作してしまうので操作に入れられません。」

たぶん、それは深刻なアプリケーションでは機能しないでしょう。ただし、メタファーを使用すると役立ちます。

「オブジェクトにそれ自体が含まれるようになるため、この操作を実行できません。」

11
Michael Brown

循環参照は、説明したり理解したりするのが難しいトピックなので、メッセージ(申し訳ありませんが、これにより循環が発生します)とともに、説明用の画像を追加することを検討してください。それは小さく、非常に概略的なものになる可能性がありますが、それは本当にユーザーが地獄について話していることを理解するのに役立つはずです。

enter image description here

11
Nikita Prokopov

愚かな歌scifi stories は、「自分のおじいちゃんになることはできません」と我慢できません。

エラーメッセージにウロボロスの画像(尾を食べるヘビ)を追加します。

Ouroboros ウロボロスのウィキペディアエントリ

4
shemnon

あなたの質問のコンテキストから、ノードの親を子として追加することでツリーのような構造を構築しようとしているエンドユーザーに警告/エラーメッセージを提供しようとしていると思います。

まず、これは純粋にuiの問題であり(データ構造が循環参照を処理できるかどうかは、ポイントの横にあります)、最初にこのような状況が発生しないようにすることで、ほとんどの場合は回避できます。

ツリーから既存のノードを選択して子ノードとして追加できる場合は、階層内のすべての親をフィルターで除外(または無効化)して、現在のノードの親を子ノードとして選択できないようにします。

ドラッグアンドドロップ機能を提供する場合は、カーソルの下にある要素の子をドロップターゲットのセットから除外するだけです。

「移動」タイプのアクションを使用して、アイテムの新しい親を選択する場合は、ターゲットノードのセットからサブツリー全体を除外します。

このような誤った状況を回避できず、何らかのメッセージを提供する必要がある客観的な理由がある場合にのみ、技術的な言葉ではなくドメイン用語を使用して、簡潔に説明してください。

たとえば、私の以前のプロジェクトの1つでは、同じ制約を持つVenuesの階層構造がありました。そこでは、次のようなメッセージを作成しました。

動けない。

{親会場名}には既に{ターゲット会場名}が含まれています。

1
Roland Tepp

そのアイテムを置くと、その尾を食べる蛇のようです!

両親は自分の子供になることはできません!

1
Chloe

ツリーには幅優先のトラバーサル順序があります。サイクルはしません。つまり、素人の言葉では、ツリーのルートが最初に来て、各ノードがその(大)子の前に来るように順序付けできるということです。サイクルでは、それはもはや成立しません。

「AはすでにBの前にいます。Bの後に追加 Aすることはできません。Bの後に移動 Aしますか?[はい] [いいえ]」

(trueの場合は、AをBの下に再親化します。これは標準的な操作であり、実際の状況では理にかなっています。たとえば、企業の部門全体を管理構造を維持して移動するなど)

1
MSalters

基本的なテキストは専門用語のままにしておきます。ユーザーはそれを学ぶこともできます:

循環参照が発生するため、操作を完了できませんでした。

これは何ですか?の説明にジャンプする方法があるでしょう:

循環参照は、アイテムの下に追加しようとしているアイテムのグループにたまたまそのアイテムが含まれていることを意味します!アイテム構造の循環参照には、Frobly Softwareでは現在実装されていない、より複雑な処理が必要です。

理想的には、ユーザーが何を達成しようとしているのかについての知識に基づいた推測に基づいて、ユーザーに何をすべきかについてアドバイスを提供する必要があります。

0
Kaz

これをユーザーに伝えます。

あなたがあなたのインターネット接続を失ったと想像してください。

カスタマーサポートに電話すると、ドライバーを更新する必要があると言われます。

そして、ドライバーは彼らのウェブサイトからダウンロードされなければなりません...

0