10

私は、動的型付け (およびオプションの静的型付け) を持つ Groovy 言語に取り掛かっています。また、リスト、マップ、および範囲をネイティブでサポートしているため、リストとマップ、特にリストのリスト、マップのリスト、リストのマップなどを頻繁に使用しています。

静的言語 (特にジェネリック) では、自分の型が何であるかを常に把握しています。私は動的言語にかなり慣れていないので、自分の変数がどうあるべきかを追跡するのが少し難しくなってきているので、他の人が何らかの変数命名規則を使用してこれらをまっすぐにしているのだろうかと思っていました.

たとえば、キーとして日付、値として整数のマップがあるとします。または、整数のリスト、またはキーとして文字列を含み、値としてアカウント オブジェクトを含むマップのリスト。

変数名の背後にある明確な規則を作成すると、調べなくても、扱っているデータ型構造を追跡するのに役立つようです。

任意のヒント?

4

6 に答える 6

2

動的言語の利点の 1 つは、オブジェクトをマップとして使用している場合でも、マップである必要はないということです。送信されたメッセージをサポートするだけです。Groovy では、特定のメソッドがマップを期待しているため、文字列キーで検索できることがわかっている場合、完全なマップ、簡略化されたマップ、キーと同じ名前のプロパティを持つ Expando を渡すことができます。 、またはキーと同じ名前のプロパティを持つその他のオブジェクト。これは、someObject["keyname"] と someObject.keyname が同じものであるためです。(もちろん、コードが someObject.get("keyname") を呼び出す場合は、そのメソッドを何らかの方法で接続する必要があります。)

要点は、Groovy のような動的言語では、TYPE よりも SUPPORTED MESSAGE について考えるということです。それが概念的に地図である場合は、問題ありません-生年月日ToTotalという名前にするのが理にかなっています(ただし、totals [birthdate]はbirthdateToTotal [birthdate]よりも見栄えが良いため、「合計」と呼ぶことを好みます)-しかし、指定する必要がない場合は、指定しないでください。柔軟性は後で残します。

于 2009-03-08T04:55:30.353 に答える
2

これは、時間の経過とともに成長するものです。ハンガリー語をまだ使用している 20 年のプログラマーを知らないとは言いませんが、彼は静的型付け言語でコーディングしているので、ほとんど理解できます。

このことを考慮。名前を付けているその変数は HashMap である可能性があるため、名前にどの型を追加しますか? 地図?これは中途半端な答えです。なぜコレクションしないのですか?そのため、データの保存方法を変更することにした場合、変数名を変更する必要はありません。何が起こっているのかを本当に読者に知らせたいのであれば、HashMap ではないでしょうか。

ご想像のとおり、これらはどれも必要ありません。動的言語 (およびポリモーフィズムでさえも) のポイントは、提示される変数の正確な型を知る必要はなく、データ自体だけが重要であるということです。そのデータにどのように接続するかについてのヒントが欲しいかもしれませんが、ほとんどの場合、すでに知っていることがすぐにわかります。または、addressesByZipCode、totalByBirthdate などのタイプを指定せずに変数にその情報を簡単に入れることができます。

于 2009-03-08T16:51:55.310 に答える