ここ数か月、私は Java から Groovy に移行してきましたが、Java から Groovy への移行を行ってきました。コードの削減、クロージャー、ビルダー、最終的に Grails のようなフレームワークを可能にする MOP、テストを作成する際のモックの容易さなど、多くの利点を評価できます。 .
しかし、私のコードは十分にグルーヴィーではないと同僚から「非難」されています。つまり、私はまだパラメーターとフィールドの型を宣言しており、ダックタイピングなどの代わりに継承とポリモーフィズムを使用する傾向があります。これらの状況では、動的対静的だけでなく、動的対オブジェクト指向パラダイムでもあるようです。一種のジレンマ。そのような場合、私はまだ OO を好む傾向があります。OO パラダイムは、コード構成を抽象化し、特定の実世界の概念に関連付けることができるという基本的な前提に大きな価値があると感じています。
だから、ここに私が助けを必要とする特定の質問があります:
パラメータやフィールドなどの型を宣言する必要がありますか?
単純なメソッドで行う場合、コードのブロックをクロージャーとして宣言する必要がありますか?
ポリモーフィック ダイナミック ディスパッチの代わりにダック タイピングを使用する必要がある場合。たとえば、groovy では、animal."$action"() または def animal; を実行できます。animal.action() 、代わりに Animal animal = new Dog(); animal.action()。Open-Closed 原則のコンテキストで最初の問題を見ることができますが、オブジェクト指向スタイルのポリモーフィズムを好む他の理由はありますか?
groovy でインターフェイスを使用する必要があるのはいつですか?
書ききれなかった同様のジレンマが他にもあると確信しています。また、これらの質問は groovy だけでなく、他の動的言語にも当てはまると思います。あなたの意見は何ですか?