使用多个来命名集合是一种好习惯吗?

时间:2012-01-23 14:26:37

标签: oop design-patterns coding-style naming-conventions

简单地说,使用多个命名集合和复合对象是一个好主意吗?

class PandaBears {
   PandaBear[] bears;

   class PandaBear {
   }
}

我担心的是,班级名称非常相似。另一方面,PandaBearList揭示了实现,但更容易区分。

3 个答案:

答案 0 :(得分:2)

我更喜欢PandaBearCollection。作为可数名词的类名只是更符合OOP的基本隐喻,即“对象”。

例如,尝试描述以下两个函数的签名:

void func(PandaBearCollection collection1, PandaBearCollection collection2);
void func(PandaBears pandaBears1, PandaBears pandaBears2);

第一个自然是:“一个带有两个熊猫熊系列的功能”。

第二个是什么? “一个需要两只熊猫的功能”?不,它只是不起作用。

答案 1 :(得分:1)

我会避免多元化。

如果您不想包含后缀List,则始终可以使用标准约定的后缀Collection,但不会显示实现详细信息。当然这取决于您使用的语言。

如果结构不是很复杂,我还喜欢使用C#特定的解决方法。通过将所有方法声明为相关IEnumerable<T>的扩展方法,您可以完全避免创建Collection类。因此,在这种情况下,您可以在IEnumerable<PandaBear>上声明扩展方法,前提是您的集合没有其他私有变量。

答案 2 :(得分:1)

我更喜欢使用复数,因为正如你所提到的那样,并不表示实现,这可能在将来很容易改变。关于命名约定的另一个考虑因素是,如果您正在使用ORM,那么在翻译数据库模式时它将使用哪种类型的约定,如discussed here。你可能会从两方面得到很多建议。我认为更重要的是你选择一个适合你和你的团队的惯例,你坚持下去。

相关问题