类命名,我应该命名一个类并创建一个属性或将该属性放入类名中

时间:2011-08-10 13:57:08

标签: class-design

我正在尝试理解人们用来命名类的注意事项。您在以下方面做出决定的方式有哪些。

student = Student.new(:smart)

vs简单地使用

student = SmartStudent.new

编辑: 我想我的确需要建模的方式确实没有正确或错误的答案。

2 个答案:

答案 0 :(得分:1)

一般来说,我喜欢用他们所代表的名词的最一般形式来命名类。所以在你的例子中,名词是学生 smart 是描述该名词的形容词。形容词代表了学生的智慧。所以我的属性将是情报

那样我就可以:

比尔=新学生 Bill.intelligence = smart

鲍勃=新生 Bob.intelligence =愚蠢的

答案 1 :(得分:0)

你应该问问自己:学生的属性是否使学生与另一个学生真正不同?

如果没有,如果可能的话,我建议你使用你提出的第一个解决方案。通常更简单的是部署学生类型的层次结构(参见组合与继承),因为如果你的学生类型增长,那么你的学生班级可能会激增,难以正确处理所有这些类型。

另一方面,如果Smart学生类具有真正的自定义行为,并且您希望使用方法覆盖和类似的东西来对该类执行操作,而不是每次检查该特定类的学生类型,那么继承可能是一种选择。我会远离那个。

您应该向我们提供更多有关正确答案的详细信息。不能对你的问题说简单的是或否,因为这取决于你的设计。

编辑: 还要考虑这一点:学生可以拥有多个属性吗?如果是这种情况,你应该明确地使用第一种方法,其他可能是不可能的(或至少是棘手的)建模具有多个属性的学生类型(例如:聪明和肥胖)。