28

私はかなりの量の Groovy コードを継承してきましたが、いくつかの理由で保守が困難であることがわかりました。

  1. 多くの場合、変数の型を判別するのは困難です。
  2. 当然の結果: 異なる型の変数を変更するのは簡単ですが、それを認識していません。
  3. 実行時までに多くのエラーが発見されます (単体テストでほとんどすべてがカバーされていない場合、これは恐ろしいことです)。
  4. パラメータの型は基本的に無視されます。
  5. 私が使用している IDE (STS Pro) は便利ですが、Java にはほど遠いものです。たとえば、リファクタリングは利用できません。
  6. 提案が利用できる場合もあれば、利用できない場合もあります。

この言語のコンパクトさには感謝していますが、メンテナンスが難しく面倒でした。

いくつかの部分を手動で Java に変換しようとしましたが、面倒でした。この変換に役立つツールやプラグインをご存知ですか?

4

8 に答える 8

16

あなたが聞きたい答えではないかもしれませんが、コードを Java に変換しようとするのではなく、Groovy に慣れることに集中したいと思います。Groovy で実行できることは、Java にうまく変換できないことがたくさんあります (クロージャなど)。Java への自動変換により、コードが読みにくくなり、理解しにくくなります。

Groovy に固執するよう説得できず、Java に移行する必要がある場合は、手動で移行するのが最善の策です。

于 2011-03-14T17:36:09.550 に答える
6

Groovy 言語と Java 言語はどちらも同じバイトコード (Java プラットフォーム バイトコード) にコンパイルされます。したがって、(a) .groovy ファイルを .class ファイルにコンパイルするだけです。(b) JDGUI などの逆コンパイラを使用して、.class ファイルを .java ファイルに逆コンパイルします。

于 2015-11-01T22:07:53.907 に答える
3

Groovy ++を使用して、代替ソリューションを見つけました。Groovy のほぼすべての利点を備えていますが、Java のパフォーマンスと強力な型付けを備えています。さらに、Groovy に基づいているため、jar ファイルを 1 つ追加し、コードの先頭に「@Typed」アノテーションを追加するだけでよいようです。

さらに、「GrUnit」などの新機能が追加され、動的型と静的型を混在させることができます。これにより、DSL の作成が可能になることを願っています。そのため、既存の Groovy コードとの混合が可能になり、Grails で使用できます。

このプロジェクトはまだ若いようですが、本当に有望です。私はすでに水域をテストしており、どこまで行けるかを確認しています。

したがって、この回答は実際にはGroovyをJavaに変換する方法を述べていませんが、さらに優れたものを得ることができます.2つの世界とオプションの第3の世界の両方の利点-しゃれは意図されていません:-)-静的型付けとパフォーマンス。

于 2011-05-09T19:26:41.053 に答える
3

私の一番のヒントは、単体テストをたくさん書くことです

このアドバイスは、ほとんどの動的言語に当てはまります。これは、コンパイラによる静的型チェックから得られる「セーフティ ネット」が少なくなるためです。入力値と出力値の型が正しいことなどを確認するテストを追加する必要があります。

これでほとんどの問題が解決すると思います。

于 2011-03-14T18:07:03.013 に答える
0

1年前にいくつか質問があります。グルーヴィーな多幸感の1〜2か月後、それは現実世界の弱さを変えるものでした. GReclipse 2.0 でさえ、それほど苦痛ではありません。コードは扱いにくくなり、苦痛になります。あなたの質問への短い答え - いいえ。これを行うための真に優れた手段はありません。GSql は Spring JdbcTemplate に置き換え、Closures はコールバックに置き換えます。これらはすべて、置換戦略を手動で決定する必要があるため、適切なコードを取得したい場合は、手動で int を実行する必要があります。それ以外の場合は、いくつかの Java デコンパイラーを使用することもできますが、それはあなたが本当に望んでいるものではないと思います。

于 2011-03-14T17:37:28.693 に答える