对于没有功能但用于存储数据的类,是否有任何特殊的行话?
7 回答
一个例子是数据传输对象(DTO),当然它仍然可以有方法。
普通旧数据结构(POD)似乎是一个合适的术语。虽然比POJO / POCO罕见,但据我所知,它似乎最适合您的标准。
你的意思是这样的吗?
public class Foo {
public int a;
public String b;
}
我认为在 Java 中没有像这样的(公共)类的特定术语。除了可能是“坏习惯”。
如果您的平台有一个不错的 JIT 编译器,那么没有充分的理由编写这样的代码。至少将字段设为私有并提供 getter 和/或 setter。一个体面的 JIT 编译器将优化简单的 getter 和 setter,从而没有性能开销。
关键是你不应该让这样的代码出现在暴露在单个编译单元之外的 API 中。为什么?它公开了类的实现细节并强制其他代码依赖它们。
如果该类是私有内部类,则上述代码可能是合理的,但如果字段是最终的并且有构造函数,我会更舒服。特别是如果编译单元很大。
我主要将它们称为容器类。也许您正在寻找的术语,因为它听起来不是很实用。但他们通常有 getter/setter。
实用程序类也是一个不错的术语。存储xyz数据以供bla使用的实用程序类 。
C# 没有标准术语,因为这种做法非常罕见。我没有特别好的理由将这些类(或结构)称为“记录”。
我在这里看到了很多激烈的争吵和高评价的错误答案。所以我会加入我的不完全正确但足够接近的答案。
JavaBean 是Java 中一种特殊的数据封装对象。在 C# 中,我并不完全了解这个名称,但它们确实有一个结构(而不是一个类),我习惯于将其用于类似类型的任务。
您可能希望使用的另一个术语是实体。Java 具有“持久性实体”,它们实际上是带有注释的 JavaBean。我的建议是与您选择使用的任何一个保持一致。
如前所述,这不是一个完美的答案,但应该足够接近。
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# 和 Java,但我发现大多数人都理解如果您将它们称为结构(来自 C)。
请注意,在 C++ 中,结构也可能具有函数,但我认为这不是惯用的。