我正在研究一个限制订单系统作为我的计算机科学课程的一个项目,我想知道在我的Order类中使用静态向量来包含我的所有订单或者我是否应该使用它是最佳做法我的主要节目?我还在努力解决所有问题,但基本上哪一项更好,或者我还应该探索另一种方式:
class Order {
public:
static vector<Order> orders; //should this be private instead?
}
int main(){
vector<Order> orders; //should I just pass this to my methods?
}
答案 0 :(得分:1)
确定对象的静态列表是否有意义,以及哪个类应保存这些对象可能取决于为什么以及如何使用对象列表。因此,如果没有更具体的用例,像“做”或“不做”的明确答案可能是基于意见的。
由于缺少用例,以下内容并不是一个答案。但是,请允许我与您分享一些想法:
我建议表达清单的含义/目的,例如:通过有意义地命名变量。这可以是openOrders
,allOrderObjects
,sharedOrders
。
与含义相关联,您应该隐藏使用vector
的实现细节。尤其是您甚至将向量暴露给公众的事实使得很难确保整个程序的含义。例如,如果含义为openOrders
,谁阻止某人将已关闭的订单添加到列表中?
所以我隐藏了向量(使其成为私有或至少受到保护);添加“控制”功能,限制访问,命名这些功能,使目的变得明显,并限制对列表的访问,以确保正确的含义。
根据含义,您还可以重新考虑数据结构vector
。也许map
更合适,例如如果订单具有唯一的真实世界标识符,例如与客户共享的订单号,并且您想确保不创建具有相同订单号的对象两次......
让我停在这里。也许你会从社区中获得更多的想法。
但我认为主要问题是:清楚地了解清单的含义/目的。