【发布时间】:2013-12-09 01:32:06
【问题描述】:
自从我上次使用c++已经很久了,从java和python回来,我有一个关于c++良好实践的问题:
我想保留一些关于一些非常简单的对象的语义代码,假设我们有对象 Tag 和 File,它们都只是 std::string 和一个包含多个使用标签和文件的函数的类 TagManager。
我的问题是,创建一个代表这些琐碎对象的自定义类型还是直接使用它们更好?
更具体地说,我可以对函数有以下定义之一:
TagIterable myFunction(Tag tag, File file);
std::vector<Tag> myFunction(Tag tag, File file);
std::vector<std::string> myFunction(std::string tag, std::string file);
我更喜欢第一种解决方案,因为我喜欢保留语义代码,另一方面,这样做需要用户检查这些类型是什么,因此降低了使用的简单性。
我还阅读了另一个问题 (Thou shalt not inherit from std::vector) '不要为了让某些东西看起来更好而生产新实体。'
那么在这种情况下你会怎么做; C++ 哲学建议做什么?
【问题讨论】:
-
File 代表一个实际的文件?或者这是否意味着它是一个文件名?然后最好将其命名为文件名,因为它可能会误导其他人使用您的代码...
标签: c++