0

JavaScript を介してスクリプト化できる埋め込み可能なクロスブラウザー プラグインを作成していますが、読み取り専用および書き込み専用のプロパティを最適な方法で処理する方法がわかりません。

それはより一般的ですか、それとも直感的ですか

  • 読み取り専用の書き込み時に値をサイレントに破棄し、
  • 書き込み専用のダミー値を返す

または

  • ブラウザーに失敗を示します。おそらくスクリプト エラーが発生します。

提案?または、フラッシュのような広く普及しているプラ​​グインの良い例はありますか?

更新:
書き込み専用プロパティが有用かどうかには興味がありません。この考えは好きではありませんが、歴史的な理由からそれをサポートする必要があります。

4

2 に答える 2

2

既存の慣行は、ポステルの法則に従っています。「自分のすることは保守的であり、他人から受け入れることは寛大である」。

この場合、プラグインのドキュメントは正しい使用法を示す必要がありますが、不適切な使用法を許容する必要があることを意味します。このアプローチの知恵は、HTML の成功と、それ以前またはそれ以降に発明された他のすべてのハイパーテキスト システムとの比較から明らかです。失敗のほとんどは非常に束縛と規律に満ちたスタイルのデザインであり、ほんのわずかなエラーでもドキュメントが読めなくなりました。

人々がよく悪い HTML を書くのと同じように、一部のユーザーはあなたに悪い入力を渡す可能性があります。「true」または「false」を取ることが文書化されているブール型のプロパティがあるとします。1 または 0 を取得した場合はどうなりますか? クラッシュするか、対処する必要がありますか?ポステルの法則によれば、対処してください。-1になったら?ここでも、非ゼロが「真」であるという C のルールを使用することを選択するなどして対処します。特定の質問にたどり着くと、ブール値のプロパティが読み取り専用として文書化されていて、誰かが値を指定した場合、プラグインはそれを食べるだけです。

この特殊なケースの処理はすべて、コーディングが増えることを意味しますが、プラグインが使いやすくなるため、人気が高くなる可能性が高くなります。

ポステルの法則の残りの半分は、読み取り専用プロパティには文書化された値のみが必要であることを意味します。再び、ブール値プロパティのケースを取り上げます。値が「true」または「false」であるとドキュメントに記載されている場合、代わりに「1」を返さないでください。たとえ JavaScript がそれを真の値であると理解していてもです。他の人が免責で違反するコードを書く場合でも、自分の仕様に従ってください。

ところで、書き込み専用プロパティという考え方は好きではありません。代わりにこれらの関数を作成する必要があります。あれは:

pluginInstance.setWriteOnlyProperty(5);

いいえ:

pluginInstance.writeOnlyProperty = 5;

読み取り専用変数はよく理解されているものです。書き込み専用変数はめったに見られません。私がこれまでに見たのは小さな 8 ビット マイクロコントローラーだけで、その理由は明らかでした。これはハードウェアの設計によるものです。ソフトウェアにそのような正当な言い訳をする余地はないと思います。

于 2009-10-09T20:16:42.377 に答える
1

ドキュメントで非常に明確にしたとしても、値を黙って破棄することはしません。いかなる種類のエラーも返さないステートメントは、効果があるはずのように見えます。明確なエラーメッセージ(「プロパティxは読み取り専用です」)が表示された場合は、デバッグが簡単です。

ただし、書き込み専用関数に関する限り、WarrenYoungの回答には同意します。書き込み専用プロパティは直感的ではありません。

于 2009-10-09T20:54:06.587 に答える