10
votes

Bigdecimal Notation Eclipse Plugin ou Bel outil externe

J'ai besoin de gagner beaucoup d'opérations à l'aide de BigDecimal et j'ai trouvé avoir à exprimer xxx

comme xxx

est non seulement Ugly, mais une source d'erreurs et de problèmes de communication entre moi et analystes d'affaires. Ils étaient parfaitement capables de lire le code avec des doubles, mais maintenant ils ne peuvent pas.

Bien sûr, une solution parfaite sera un soutien Java pour la surcharge de l'opérateur, mais que cela ne va pas arriver, je cherche que cela ne va pas un plug-in Eclipse ou même un outil externe qui apportent une conversion automatique de «Natural Way» à «BigDecimal Way».

Je ne suis pas pas essayer de préprocessez le code source ou la traduction dynamique ou une chose complexe, je veux juste quelque chose que je peux saisir du texte et obtenir du texte et conserver la "voie naturelle" comme un commentaire dans le code source.

ps: j'ai trouvé Cet incroyable piratage intelligent mais je ne veux pas commencer à faire la manipulation de ByTecode. Peut-être que je peux utiliser cela pour créer un traducteur naturel2bigdecimal, mais je ne veux pas réinventer la roue si quelqu'un a déjà fait un tel outil.

Je ne veux pas passer à Scala / Groovy / JavaScript Et je ne peux pas non plus, les règles de l'entreprise interdisent quoi que ce soit, mais Java au code côté serveur.


4 commentaires

Je suppose que c'est l'un de ceux-ci "Si vous voulez quelque chose de fait correctement, faites-le vous-même (Zorg, cinquième élément)" problèmes.


Cela ne s'applique que si vous êtes vraiment bon à quelque chose. Dans mon cas, quand je veux quelque chose de fait correctement, je cherche un projet open source bien établi.


Je pense qu'il recherche un outil où vous mettez dans l'expression arithmétique et que vous obtenez la syntaxe bigdecimale à coller dans le code source, ce qui devrait le garantir une erreur d'erreur.


Je ne suis pas d'accord. Je ne sais pas plus rapidement la notation de la bigdecimale, c'est de ma faute, mais je pense que dans la notation naturelle et que je fais des erreurs traduites à BigDecimal, et même si j'étais un traducteur parfait, j'ai toujours besoin d'écrire de façon beaucoup plus de caractères dans la notation de BigDecimale. De plus, je peux demander aux analystes commerciaux d'apprendre, mais je m'attendrai à ce que cela prendra plus d'erreurs, car ils apprennent quelque chose de nouveau. Je considère que "mon intérêt" d'améliorer la qualité du produit final que je construit, en ajoutant même une certaine complexité à mon processus de développement.


3 Réponses :


0
votes

Je suis d'accord, c'est très lourd! J'utilise une documentation appropriée (commentaires avant chaque équation) comme la meilleure "solution" à cela.

// a = b - c * d;
BigDecimal a = b.subtract( c.multiply( d ) )


1 commentaires

On dirait que vous et moi sont les seuls qui n'aiment pas la notation de BigDecimal ... Des conseils rapides, ce n'est pas une réponse à ma question, n'est qu'un commentaire, alors postez-le comme un commentaire, quelqu'un peut (et probablement) Downvote vous



0
votes

Vous pourriez aller la voie d'un évaluateur d'expression. Il y a un décent (bien que payé) à http://www.singulularsys.com/jep . ANTLR a une grammaire rudimentaire qui fait également une évaluation d'expression (ce que je ne suis pas sûr de savoir comment cela fonctionnerait) à http://www.antlr.org/wiki/display/antlr3/expression+evaluator .

Vous ne vous donneriez pas non plus la sécurité de la compilation que vous auriez avec de véritables opérateurs. Vous pouvez également écrire les différentes classes basées sur des algorithmes dans quelque chose comme Scala, qui prennent en charge la surcharge de l'opérateur hors de la boîte et interagirait de manière transparente avec vos autres classes Java.


0 commentaires

1
votes

"Je n'essaie pas de pré-traiter le code source ... Je veux juste quelque chose que je peux saisir [expression arithmétique bigdecimale]".

la moitié de la résolution d'un problème consiste à reconnaître le problème de ce que c'est. Vous exactement voulez quelque chose à préprocéder à vos expressions bigdecimales pour produire Java légal.

Vous n'avez que deux choix de base:

  • Un compilateur de langage spécifique "de domaine" autonome qui accepte les expressions "standard" et les convertit directement au code Java. (Ceci est un type de préprocesseur). Cela vous laisse avec le problème de garder toutes les fragments d'expression autour et de savoir où les mettre dans le code Java.

  • Un outil qui lit le texte de la source Java, trouve de telles expressions et les convertit à BigDecimal dans le texte. Je suggérerais quelque chose qui vous permettra de coder les expressions en dehors du code actuel et d'insérer la traduction.

    Peut-être (volé d'une autre réponse): xxx

    avec le sens "compilez la grande expression décimale dans le commentaire dans son équivalent Java et remplacez le Déclaration suivante avec cette traduction.

    Pour mettre en œuvre la deuxième idée, vous avez besoin d'un Système de transformation de programme , qui peut appliquer des règles de réécriture source à source à transformer (générer comme un cas particulier de transformation). Ceci n'est qu'un prétraiteur organisé pour être personnalisable à vos besoins.

    Notre Toolkit de réingorisation logiciel DMS avec son java front fin pourrait faire cela. Vous avez besoin d'un analyseur Java complet pour faire cette partie de transformation; vous avez Voulez-vous la résolution de nom et de type afin que vous puissiez analyser / vérifier le processus Expression de la santé mentale.

    Bien que je conviens que la notation de Java est laide et que votre proposition le rendrait plus jolie, mon opinion personnelle ne vaut pas l'effort. Vous vous retrouvez avec une dépendance à un outil complexe (oui, DMS est complexe: la manipulation de code n'est pas facile) pour un gain plutôt marginal.

    Si vous et votre équipe a écrit des milliers de ces formules, ou les écrivains de telles formules étaient Java-naive, cela pourrait avoir un sens. Dans ce cas, J'irais plus loin et j'insiste simplement que vous écrivez le format expression standard où vous en avez besoin. Vous pouvez personnaliser l'extrémité avant Java pour détecter lorsque les types d'opérande étaient de type décimal et effectuez la réécriture pour vous. Ensuite, vous exécutez simplement ce préprocesseur avant chaque étape de compilation Java.


2 commentaires

J'écris un commentaire critiquant votre réponse et je me rendais compte que je n'aime pas la réponse car c'est correct . Je vais donc l'accepter. Je ne pense toujours pas avoir besoin d'un parseur complet Java, mais quelque chose qui analyse un sous-ensemble raisonnable de Java, mais c'est juste mon cas, un outil d'utilisation générale aura besoin d'un analyseur Java complet ... Je pense que nous devrons avoir besoin de Habituez-vous à la notation de BigDecimale ou convaincre les gestionnaires de nous permettre d'utiliser Scala pour ce cas particulier. Ou peut-être xtext est la réponse, si nous sommes disposés à investir un peu de temps. Merci pour vos conseils!


Parfois, la vérité est un peu difficile à avaler, je suis d'accord. Je doute que vous puissiez facilement éviter un analyseur complet; En fin de compte, vous devez reconnaître les grands opérandes décimales par leur type , vous devez donc capturer toutes les déclarations d'identificateurs et les détails des expressions. Vous pourrez peut-être éviter de faire un analyseur complet, mais assurez-vous de ne pas avoir besoin d'une partie peut être aussi difficile que de la construire. Pour le monde Java, ils sont "assez faciles" pour obtenir, de toute façon.