4

Groovy がすべてのインスタンス変数とクラス変数を公開し、代わりにゲッターとセッターを作成する方法が気に入っています。これにより、不要なコーディングを大幅に削減できます。一方、上司はそれを嫌い、私はとても悲しくなりました:(

Groovyやその他のフレームワーク/アドオンを使用せずに、JavaでGroovyの簡潔さを実現する方法はありますか?

私が働いているこの外国の枠組みの導入に対して、権力者は親切に受け入れないだろうと感じています。

だから私が探しているのは、Groovy などを使用せずに Java の過度の冗長性を解決することです。

単純にすべてを公開するなど、Java だけで実行できますか?

4

8 に答える 8

8

Java言語はそれが何であるかです。新しい言語 (groovy など) に移行せずにコア言語を変更することはほとんどありません。経営陣から賛同を得ることは、あなたが思っているほど、Groovy に移行するのは難しいことではないかもしれません。私も数年前、あなたと同じような立場でした。意味のあるソフトウェアのいくつかの領域に groovy の導入を開始できます。

開始するのに最適な場所は、単体テストに使用することです。基本的に、groovy でクラスを作成すると、Java バイトコードにコンパイルされます。クラスパスに groovy jar がある限り、他の人はそれが groovy コードであることさえ知らないかもしれません。これをテストに使用することで、コードが単純化され、作業が容易になることを実証できます。運営に売ればいいのに。

そこから、動的言語によって作業が軽減される他の新しい分野に導入し続けます。Groovy と Java は、同じコア ライブラリ セットを使用するため、非常にうまく組み合わされます。

于 2009-04-20T02:25:43.457 に答える
6

このような状況では、getter と setter を作成できる IDE が味方になります。

ゲッターとセッターを書かなければならないことは、新しいクラスを書く上で最も反復的で面白くない部分だと思います。getter と setter を自動的に生成できるEclipseのような IDE を使用すると、冗長なコードを書く手間を軽減できます。

もちろん、メソッドgetXsetXメソッドを使用する必要性が軽減されるわけではありませんが、少なくともクラスの実装が少し簡単になり、負担が軽減されます。

于 2009-04-20T02:27:14.653 に答える
1

AOP を使用して、冗長性の一部を取り除くことができます。

たとえば、次のプロパティがあるとします。

次に、次のように定義できます。 @GetterSetter public String Name(String name) { };

次に、注釈を探すアスペクトを用意し、パラメーターが null の場合の読み取り、または書き込み (パラメーターが null ではない) が行われると、適切なアクションが実行されるようにします。

これを書くのはとても簡単ですが、AOP の賛同を得なければならず、これは難しいかもしれません。

しかし、他の人が述べたように、Eclipse と Netbeans は getter/setter を簡単に作成できるので、それらで特別なことをする必要がなければ、かなり簡単なはずです。

私は自分のプロパティを独自のクラス (getter/setter のみ) に配置する傾向があります。その後、必要に応じて冗長性や equals および hash メソッドを確認する必要がなく、他のクラスではそれを使用するだけです。退屈な余分なコーディングを隠します。

于 2009-04-20T02:32:08.043 に答える
0

私の豆の注釈を試してみてください: http://code.google.com/p/javadude/wiki/Annotations

アノテーション プロセッサは、通常は記述しなければならない多くの典型的なボイラープレートを備えたスーパークラスを生成します。

@Bean(
    properties={
        @Property(name="name", bound=true),
        @Property(name="age", type=int.class, bound=true)
    }
)
public class Person extends PersonGen {
}
于 2009-04-20T14:36:52.043 に答える
0

ドメイン固有のフレームワークを使用すると、Java の効果的な抽象化レベルを大幅に高めることができます。たとえば、RESTful Web サービスを作成するときの面倒な詳細のほとんどは、Restlet が処理してくれます。または、POJO を XML または JSON との間でマッピングする必要がある場合は、XStream や JAXB などのパッケージがマッピング ロジックを自動的に生成します。面倒な JDBC プログラミングを避けるには、iBatis や Hibernate などの永続化マネージャーを試してください。Freemarker や Velocity などのテンプレート システムを使用すると、マークアップの生成がはるかに簡単になります。

ツールのサポートがない場合でも、最上位のコードがより抽象的に見えるように、低レベルの詳細を共通のメソッドやクラスに分解する方法を見つけることができます。

(たとえば、単体テストのいくつかを作成するなど、プロジェクトの補助的な役割で Groovy を評価できるかどうか、上司に尋ねることを検討してください。)

于 2009-04-26T23:09:28.550 に答える
0

特定のタスク(JPA、Swingなど)のためのより効果的なフレームワークを除いて、ソースコードを小さくするものは何も知りません。

機能が通常IDEから提供される場合は、そのようなものです。

私は、ゲッター/セッターを記述し、抽象メソッドを自動実装し、その他のさまざまなショートカットを作成するためのツールを備えた Netbeans を使用しています。もちろん、ソース コードも同様に冗長です。

于 2009-04-20T02:26:40.113 に答える