![]() |
1
8
|
![]() |
2
2
我认为最好将这些属性存储在枚举实例本身中,即
甚至可以将几个布尔属性编码为一个字节(或者使用位集);
不过,简单地这样做怎么样:
或者像这样的
|
![]() |
3
1
记住,只有当您需要区分代码中的对象时,枚举才有用——它们除了可以作为代码输入之外,是无用的。 这是相关的,因为您正在向您的软件中引入一些元素,从长远来看,这些元素会变成糟糕的代码味道。 例如,除了在以下语句中之外,如何使用这些语句:
这应该会立即提醒任何OO程序员——开关是一种糟糕的代码味道,因为它们几乎总是指示糟糕的OO设计)。 另一种方法是创建一组有限的对象,由数据初始化,最好不是代码。 你可能有一个具有鲸鱼属性的生物实例——也许whale.move()会使用一个watermovement实例,而大象则包含并使用一个lombovement实例。 一般来说,在OO中编程而不是使用开关和枚举将导致大量代码崩溃。 每次你写一个方法时,记住“不要向一个对象索要数据,然后对该对象进行操作,而是让该对象为你做一个操作”。 |
![]() |
4
0
我不知道您为什么要将它放入另一个枚举中,当您可以将它放入该函数时:
|
![]() |
5
0
可能是这样的:
|
![]() |
6
0
我认为最好不要用这种分类来污染枚举。最好将类别与枚举分离,以便以后可以添加更多类别,而不会影响枚举。这遵循了关注点分离和类设计的单一责任原则。 为此,只需使用一个Enumset来保存实例,即:
如果你想在简单的成员身份之上添加功能,或者你想在语法上多加一点甜度扩展Enumset
|