我正在尝试理解人们用来命名类的注意事项。您在以下方面做出决定的方式有哪些。
student = Student.new(:smart)
vs简单地使用
student = SmartStudent.new
编辑: 我想我的确需要建模的方式确实没有正确或错误的答案。
答案 0 :(得分:1)
一般来说,我喜欢用他们所代表的名词的最一般形式来命名类。所以在你的例子中,名词是学生。 smart 是描述该名词的形容词。形容词代表了学生的智慧。所以我的属性将是情报。
那样我就可以:
比尔=新学生
Bill.intelligence = smart
鲍勃=新生
Bob.intelligence =愚蠢的
答案 1 :(得分:0)
你应该问问自己:学生的属性是否使学生与另一个学生真正不同?
如果没有,如果可能的话,我建议你使用你提出的第一个解决方案。通常更简单的是部署学生类型的层次结构(参见组合与继承),因为如果你的学生类型增长,那么你的学生班级可能会激增,难以正确处理所有这些类型。
另一方面,如果Smart学生类具有真正的自定义行为,并且您希望使用方法覆盖和类似的东西来对该类执行操作,而不是每次检查该特定类的学生类型,那么继承可能是一种选择。我会远离那个。
您应该向我们提供更多有关正确答案的详细信息。不能对你的问题说简单的是或否,因为这取决于你的设计。
编辑: 还要考虑这一点:学生可以拥有多个属性吗?如果是这种情况,你应该明确地使用第一种方法,其他可能是不可能的(或至少是棘手的)建模具有多个属性的学生类型(例如:聪明和肥胖)。