在Java编程中,如何正确命名要在switch case中使用的枚举?
在我的示例中,我在在Java编程中,如何正确命名要在switch case中使用的枚举?,java,oop,switch-statement,Java,Oop,Switch Statement,在我的示例中,我在switch case语句中使用了state和action。我有点搞不清楚是否要使用一个包含状态和动作的enum 示例: switch(gun.state) { case RELOAD: gun.state = RELOADING break; case RELOADING: break; case FIRE: gun.state = FIRING break; case FIRING: break; } 问题我应该创建一个枚举还是按
switch case
语句中使用了state
和action
。我有点搞不清楚是否要使用一个包含状态和动作的enum
示例:
switch(gun.state) {
case RELOAD: gun.state = RELOADING break;
case RELOADING: break;
case FIRE: gun.state = FIRING break;
case FIRING: break;
}
问题我应该创建一个枚举
还是按操作和状态对其进行分类
switch(gun.action) {}
switch(gun.state) {}
public enum Action {FIRE, RELOAD};
public enum State {FIRING, RELOADING}
建议/答案
根据Erwin Bolwidt的回答,我是否应该创建另一个enum
,并按操作和状态对其进行分类
switch(gun.action) {}
switch(gun.state) {}
public enum Action {FIRE, RELOAD};
public enum State {FIRING, RELOADING}
如果大小写仅为名词或动词(或两者),则最好使用简单的if/else语句块。如果有更多的可能性,建议使用switch。Java不关心常量名称中的英语语法。我觉得更改正在打开的变量可能不是一个好主意。@ScaryWombat为什么?在状态机实现中,在switch语句的情况下更改状态是一个非常正常的用例。ronscript:这与switch语句无关,而是与状态名称有关。开火/重新加载是动作,而不是状态。激发/重新加载是状态,激发/重新加载也是状态的好名称。状态机的一个典型情况是基于动作更改状态。因此,您将拥有一个带有元素FIRE/RELOAD的enum
Action
,以及一个带有元素FIRING、RELOADING、FIRED和RELOAD的enumState
。如果大小写只是名词或动词(或两者),那么最好使用一个简单的if/else语句块。如果有更多的可能性,建议使用switch。Java不关心常量名称中的英语语法。我觉得更改正在打开的变量可能不是一个好主意。@ScaryWombat为什么?在状态机实现中,在switch语句的情况下更改状态是一个非常正常的用例。ronscript:这与switch语句无关,而是与状态名称有关。开火/重新加载是动作,而不是状态。激发/重新加载是状态,激发/重新加载也是状态的好名称。状态机的一个典型情况是基于动作更改状态。因此,您将有一个enumAction
和元素FIRE/RELOAD,以及一个enumState
和元素FIRING、RELOADING、FIRED和RELOAD。