関数を持たないが、データを格納するために使用されるクラスを表す特別な専門用語はありますか?
7 に答える
その例の 1 つがData Transefer Object (DTO)ですが、もちろんメソッドを持つこともできます。
Plain old data structure (POD)が適切な用語のようです。POJO / POCOよりもまれですが、私が見たところ、あなたの基準に最も適しているようです。
このようなことを意味しますか?
public class Foo {
public int a;
public String b;
}
Java でそのような (パブリック) クラスを表す特定の用語はないと思います。おそらく「悪い習慣」を除いて。
プラットフォームにまともな JIT コンパイラがある場合、そのようなコードを書く正当な理由はありません。少なくともフィールドをプライベートにして、ゲッターやセッターを提供してください。適切な JIT コンパイラは、単純なゲッターとセッターを最適化して、パフォーマンスのオーバーヘッドがないようにします。
重要な点は、単一のコンパイル ユニットの外部に公開されている API にそのようなコードを表示させてはならないということです。なんで?クラスの実装の詳細を公開し、他のコードがそれらに依存するように強制します。
クラスがプライベート内部クラスである場合、上記のコードは合理的ですが、フィールドが final であり、コンストラクターがあればより快適です。特にコンパイル単位が大きい場合。
ここでは、多くのフレームワークと高評価の不正解が見られます。だから私は完全に正しいとは言えませんが、十分に近い答えを出します。
JavaBean は、Java の特別なデータ カプセル化オブジェクトです。C# では、名前を完全には認識していませんが、同様のタイプのタスクに使用するのに慣れている構造 (クラスではなく) があります。
使用したい別の用語はエンティティです。Java には、実質的に注釈付きの JavaBeans である「永続エンティティ」があります。私のアドバイスは、使用するものと一貫性があることです。
前述のように、これは完璧な答えではありませんが、十分に近いはずです。
http://en.wikipedia.org/wiki/JavaBeans
http://docs.oracle.com/javaee/5/tutorial/doc/bnbqa.html
http://msdn.microsoft.com/en-us/library/vstudio/ah19swz4.aspx
http://msdn.microsoft.com/en-us/library/system.data.entity(v=vs.103).aspx
この慣行は非常にまれであるため、C# の標準用語はありません。私はそのようなクラス (または構造体) を「レコード」と呼んでいますが、特に正当な理由はありません。
私は主にコンテナクラスと呼んでいます。あまり機能的に聞こえないので、あなたが探している用語かもしれません。しかし、多くの場合、ゲッター/セッターがあります。
ユーティリティ クラスもいい言葉です。blaで使用するxyzデータを格納するユーティリティ クラス 。
あなたの質問には C# と Java のタグが付けられていますが、(C からの) 構造体と呼べばほとんどの人が理解できることがわかりました。
C++ では、構造体にも関数がある場合がありますが、これは慣用的ではないと思います。