meilleure façon de gérer les propriétés en lecture / écriture uniquement dans le navigateur-plugin scriptable

StackOverflow https://stackoverflow.com/questions/1528961

  •  20-09-2019
  •  | 
  •  

Question

Ecrire un plugin multi-navigateur intégrable qui est scriptable via JavaScript je ne suis pas sûr comment gérer les propriétés en lecture seule et en écriture seule la meilleure façon.

est-il plus fréquent ou intuitif à

  • les valeurs de défausse en silence sur écriture pour en lecture seule et
  • retour valeur factice pour l'écriture seule

ou

  • indiquer une défaillance du navigateur, ce qui très probablement une erreur de script

Suggestions? Ou y at-il de bons exemples de plugins répandus comme le flash?

Mise à jour: Je ne suis pas intéressé par castrés propriétés en écriture seule sont utiles ou non - je n'aime pas l'idée, mais je dois soutenir que pour des raisons historiques

.
Était-ce utile?

La solution

pratique actuelle suit loi de Postel : « Soyez prudent dans ce que vous faites, soyez libéral ce que vous acceptez des autres. "

Dans ce cas, cela signifie que la documentation de votre plug-in doit montrer l'utilisation correcte, mais il devrait tolérer mauvaise utilisation. La sagesse de cette approche devrait être évident d'étudier le succès du HTML par rapport à tout autre système hypertexte qui est venu avant ou a été inventé depuis. La plupart des échecs étaient très bondage et discipline modèles de style, où la moindre erreur a causé le document illisible.

Tout comme les gens écrivent régulièrement mauvais HTML, certains de vos utilisateurs sont susceptibles de vous passer une mauvaise entrée. Disons que vous avez une propriété booléenne, documenté pour prendre « vrai » ou « faux ». Que faire si vous obtenez 1 ou 0? Faut-il planter, ou tout simplement faire face? Loi de Postel dit, faire face. Que faire si vous obtenez -1? Encore une fois, faire face, par exemple en choisissant d'utiliser la règle de C qui est non nul « vrai ». Comment arriver à votre question précise, si la propriété booléenne est documentée en lecture seule, et que quelqu'un lui donne une valeur, votre plug-in devrait juste manger.

Toutes ces manipulations de cas particulier signifie plus de codage pour vous, mais rend votre plugin plus facile à utiliser, et donc plus susceptibles d'être populaire.

L'autre moitié de la loi de Postel signifie que les propriétés en lecture seule ne doivent avoir des valeurs documentées. Encore une fois, prenez le cas de la propriété Boolean: si vos documents disent que la valeur est « true » ou « false », ne reviendra jamais « 1 » au lieu, même si JavaScript comprend que pour être une valeur truthy. Suivez votre propre spécification, comme vous écrivez du code qui permet aux autres la violent en toute impunité.

Par ailleurs, je n'aime pas l'idée de propriétés en écriture seule. Vous devriez faire ces fonctions à la place. C'est:

pluginInstance.setWriteOnlyProperty(5);

pas:

pluginInstance.writeOnlyProperty = 5;

Variables de lecture sont des choses bien compris. variables en écriture seule sont rares à voir. La seule fois que je l'ai jamais vu un est dans un petit microcontrôleur 8 bits, et la raison, il était clair, en raison de la conception du matériel. Je ne vois pas de place pour ces bonnes excuses dans le logiciel.

Autres conseils

Je ne jeter des valeurs en silence, même si vous le faites très clair dans la documentation. Une déclaration ne renvoie aucun type d'erreur fait paraître comme il faut avoir un effet. Il est plus facile de déboguer si vous obtenez un message d'erreur clair ( « x la propriété est en lecture seule »).

Je suis d'accord avec la réponse de Warren Young, cependant, dans la mesure où les fonctions d'écriture ne vont. Écrivez-seulement les propriétés sont unintuitive.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top