【发布时间】:2013-08-08 13:33:58
【问题描述】:
如果我想使用一个 case 语句测试 enum 的多个值,并且 80% 的 case 语句需要两个不同的 if 检查,那么一遍又一遍地重用该代码是否被认为是糟糕的编码?
我实际上使用了ctrl+c 和ctrl+v,感觉代码神会杀了我。
以下是一些观点:
switch(value) {
case value1:
{
if(something) { //do something; }
if(somethingElse) { // do something else; }
//unique for value1
}
break;
case value2:
{
//unique for value2
}
break;
case value3:
{
if(something) { //do something; }
if(somethingElse) { // do something else; }
//unique for value3
}
break;
case value4:
{
if(something) { //do something; }
if(somethingElse) { // do something else; }
//unique for value4
}
break;
case value5:
{
//unique for value5
}
break;
default:
break;
我的value 是从enum 随机生成的,被称为随机次数。目标是让value 成为任何随机“值”并且完全独立于其他情况。
【问题讨论】:
-
就不能让你们的相似案例互相串流吗?
-
这显然是重复,问题是是否值得通过命令模式、枚举中的代码等来修复。
-
@SotiriosDelimanolis 你能详细说明一下吗?
-
第一步应该是为
if(something)和if(somethingElse)创建一个函数 -
我不知道你是否忘记了,只是省略或不知道,但每个
case的末尾应该有一个break语句,除非你希望代码流过(即value2、value3、value4和value5中的代码,如果value1为真,如果没有break语句,也会执行)。
标签: java switch-statement code-organization