REMARQUE: J'avais initialement posé une question this sur https://softwareengineering.stackexchange.com/ =, mais on m'avait demandé de le déplacer ici.
Je développe actuellement un Simplifier pour un Calculatrice. Cela permet aux utilisateurs de mettre des sections de l'entrée entre parenthèses comme nous le faisons dans un problème mathématique. Mais ma question est la suivante: dois-je (ou cela) autoriser également les autres types de supports (ou accolades)? Par exemple, dois-je autoriser
ceci: 2 [ 3 +{ 4 ^ 5 - ( 39 * 7 + 0 ) + 3 } ]
ou ceci: 2 ( 3 +( 4 ^ 5 - ( 39 * 7 + 0 ) + 3 ) )
Ma raison de demander:
Les avantages de la 1ère approche (et les inconvénients de la 2ème) sont:
Les avantages de la 2ème approche (et les inconvénients de la 1ère) sont:
()
sont autorisés.Dois-je optimiser mon programme pour une approche du programmeur ou une approche du mathématicien?
(Déjà donné cette réponse dans le chatroom , mais voici)
Je pense que l'utilisation de crochets différents qui ont la même fonction est source de confusion car les gens apprennent à n'utiliser que le crochet ")".
Je pense que vous devriez utiliser une méthode différente pour rendre les crochets correspondants visibles.
De nombreux éditeurs de code mettent en évidence ou soulignent les crochets d'ouverture et de fermeture lorsque l'un des deux est sélectionné.
Vous pouvez également utiliser pour donner aux parenthèses correspondantes une couleur différente, non seulement après la sélection, mais en standard. Cela pourrait transformer l'entrée en arc-en-ciel, mais je pense que ce sera beaucoup plus "lisible".
Vous pouvez essayer de colorer les parenthèses associées et de mettre en surbrillance celles qui sont actives, tout comme MS Excel le fait.
Je recommanderais la deuxième approche
2 ( 3 +( 4 ^ 5 - ( 39 * 7 + 0 ) + 3 ) )
1) La population générale n'est pas programmeuse et n'a pas l'habitude de voir { }
, dans les écoles on nous enseigne ( )
pour les équations mathématiques
Vous avez vraiment posé deux questions ici, mais néanmoins:
Une "calculatrice" devrait-elle prendre en charge "{" (accolades) et "[" (accolades)?
Oui, l'accessibilité est le mot clé ici. Pas comme pour les "handicapés physiques" mais comme pour les "comportements appris". Certaines personnes voudront simplement utiliser des accolades bouclées ou en boîte, car c'est ainsi qu'elles roulent sur du papier et vous souhaitez que la barrière entre l'application réelle et l'application virtuelle soit aussi faible que possible.
Les utilisateurs devraient pouvoir utiliser des modèles d'interaction qu'ils connaissent déjà (tout le reste va être frustrant), donc soutenir ces accolades leur donne plus de commodité et ne nuira à personne qui veut utiliser des parenthèses exclusivement.
Dois-je optimiser mon programme pour une approche de programmeur ou de mathématicien?
Pourquoi pas les deux? Vous connaissez probablement la mise en évidence d'accolades correspondantes dans de nombreux IDE et éditeurs, où deux accolades correspondantes sont mises en surbrillance si votre curseur est sur l'un d'entre eux. Une autre approche est le codage couleur, utilisé dans Excel comme souligné par stereoactivo.
Ces deux approches sont applicables et facilitent la lisibilité pour les programmeurs et le style d'écriture des mathématiciens. C'est là que votre application virtuelle peut dépasser celle de la vie réelle, ce qui est toujours agréable.
À part cela, que voulez-vous vraiment dire par optimisation? Quelles étaient vos idées sur l'optimisation pour l'un des deux?
[plusieurs accolades] peut rendre le traitement plus difficile (détection d'erreurs de syntaxe, accolades incompatibles).
C'est certainement vrai, mais vous vous souciez surtout de l'utilisateur, pas du programmeur. (Et soyons honnêtes, les accolades incompatibles ne sont pas une chose à mettre en œuvre. Si nous parlons d'une calculatrice physique, vous devriez bien sûr considérer le coût de construction, mais je suppose que votre question visait uniquement les applications.)
De plus, c'est exactement à cela que servent ces accolades supplémentaires en premier lieu: détecter les erreurs de pensée. Si vous écrivez des accolades incompatibles, vous avez certainement quelque chose de tordu dans votre esprit. Donner à l'utilisateur un indice à ce sujet va certainement améliorer son expérience.
En général, permettre aux utilisateurs d'adapter des modèles connus est quelque chose à désirer dans chaque application et connu pour être le facteur clé de l'intuitivité. Par conséquent, la prise en charge des deux styles d'écriture, y compris la vérification des accolades correspondantes, semble être la meilleure solution.
Pour votre cas spécifique, vous ne devez utiliser que des crochets ronds ()
.
Mathématiquement parlant, différents crochets ont des significations différentes. Prenons le terme f(2+n)
comme exemple; il peut avoir l'une des deux significations suivantes:
Si vous échangez les crochets pour des carrés f[2+n]
:
Il existe d'autres façons d'améliorer la convivialité:
J'ai écrit un violon pour montrer les 4 différentes manières décrites ci-dessus.
1 : La mise en surbrillance des deux crochets facilite l'identification de la paire par l'utilisateur, surtout lorsque le curseur se trouve entre deux crochets de fermeture ou deux crochets d'ouverture.