【发布时间】:2013-03-22 14:21:18
【问题描述】:
这确实是一个良好形式/最佳实践的问题。我使用 C++ 中的结构来形成旨在基本上保存数据的对象,而不是创建一个具有大量访问器方法的类,这些方法除了获取/设置值之外什么都不做。例如:
struct Person {
std::string name;
DateObject dob;
(...)
};
如果您想象那里还有 20 个变量,那么将其编写为具有私有成员和 40 多个访问器的类会很麻烦,而且对我来说似乎很浪费。
但有时,我可能还需要为数据添加某种最小功能。在示例中,假设我有时还需要年龄,基于 dob:
struct Person {
std::string name;
DateObject dob;
(...)
int age() {return calculated age from dob;}
}
当然,对于任何复杂的功能,我都会创建一个类,但是对于像这样的简单功能,这是“糟糕的设计”吗?如果我确实使用了一个类,将数据变量保留为公共类成员是一种不好的形式,还是我只需要接受它并使用一堆访问器方法创建类?我了解类和结构之间的区别,我只是在询问最佳实践。
【问题讨论】:
-
编写访问方法(getter/setter)是个好主意。如果你只是谷歌一下,你可能会发现关于这个话题的大量讨论。提示:大多数 IDE 都提供了自动生成 getter 和 setter 的功能。
-
class和struct类型的不同之处在于class的默认访问控制是private,而struct的默认访问控制是公共的。在创建类型之外使用关键字可能略有不同......但您似乎投入了大量精力来区分类型中的单词struct和class。它可用于特定项目中的文档,但这是特定于项目的。 -
还有免费功能
int age(const Person& person)的选项。并非所有东西都必须是带有方法的对象。