x, y, z, q에 대해 몇 가지 가정을 할 수 있습니까? e.G. 그 중 하나만 사실 일 수 있습니다. 당신이 국가
enum State {
X{
void doSomething(){
doItTheXWay();
}
},
Y{
void doSomething(){
doItTheYWay();
}
},
Z{
void doSomething(){
doItTheZWay();
}
},
Q{
void doSomething(){
doItTheQWay();
}
};
void doSomething(){
}
}
로 당신의 코드에서 볼 수있는 것보다 당신이 사용하는 곳 방금 상태를 할당 할 수
문은 경우에 옳은 일
State state = getAState();
state.doSomething();
을 할 경우 열거 형을 좋아하지 않음 State는 Interface가 될 수 있고 X to Q는 클래스를 구현할 수 있습니다. 이 경우 이점은 동일한 if else 구문을 여러 번 사용하는 것입니다. 일부 codelines 나중에는
if(x)
do_the_next_thing_with_X();
...
로 시작하는 것이 말하거나 또 다른 기능으로 열거를 확장하고 단락의 목적을 물리 칠 것이다, 하나의 호출
state.doTheNextThing();
@Thirler 흠을 만들 수 평가. 저는 평균적으로 x, y, z, q의 균등 확률과 시간 복잡성을 가정하면 이것이 성능 향상이 될 것이라고 생각합니다. 그러나 z의 확률이 50 %이고 q의 확률이 1 %이고 처리 능력의 95 %를 차지한다면 처리량은 거의 들지 않을까요? 적절한 최적화없이 마이크로 최적화가 문제를 일으킬 수있는 방법을 확인하십시오. –
예, 우리는 하나의 변수를 사용하여 해당 검사를 수행해야합니다. – Halo
@Tim 성능 저하가 발생하려면 극도로 긴 조건 (수백만 번 실행되는 코드)이 필요합니다.나는 확실히 최적화하지 않고있다. (문제는 그것에 대해 이야기하지 않는다.) 유지 보수성을 향상시킬 것을 제안하고있다. 성능이 중요한 경우 계산 결과를 투명하게 버퍼링해야합니다 (결과를 저장하는 함수 뒤에 숨김). 주어진 예제는 몇 가지 조건을 두 번 실행합니다. 그러나 실행하는 데 상당한 시간이 걸릴 때까지는 전혀 최적화하지 않는 것이 좋습니다. – Thirler