Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java编程中,如何正确命名要在switch case中使用的枚举?_Java_Oop_Switch Statement - Fatal编程技术网

在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的enum
State
。如果大小写只是名词或动词(或两者),那么最好使用一个简单的if/else语句块。如果有更多的可能性,建议使用switch。Java不关心常量名称中的英语语法。我觉得更改正在打开的变量可能不是一个好主意。@ScaryWombat为什么?在状态机实现中,在switch语句的情况下更改状态是一个非常正常的用例。ronscript:这与switch语句无关,而是与状态名称有关。开火/重新加载是动作,而不是状态。激发/重新加载是状态,激发/重新加载也是状态的好名称。状态机的一个典型情况是基于动作更改状态。因此,您将有一个enum
Action
和元素FIRE/RELOAD,以及一个enum
State
和元素FIRING、RELOADING、FIRED和RELOAD。