나는 플레이어가 동작 버튼을 클릭 할 수있는 게임을 만들고있다. 이 동작 버튼은 상황에 따라 완전히 다른 작업을 수행합니다.큰 조건문을 어떻게 리팩토링합니까?
function doAction() {
if (standingOnItem) {
if (itemOnGround === POTION) {
if (equippiedItem === POTION) {
// mix potions
return;
}
if (equippiedItem === TORCH) {
// boil potion
return;
}
// pick up potion
}
if (itemOnGround === CHEST && equippedItem === KEY) {
// open chest
}
return;
}
if (equippedItem === POTION) {
// put potion on the ground
}
if (equippedItem === TORCH) {
// put out torch and drop it on the ground
}
if (standingOnStaircase && equippedItem === KEY) {
// move down one level
}
}
위 코드는 예제 코드이지만 doAction 함수에는 이미 50 개 이상의 조건이 있습니다. 그냥 그들을 넣어 어떤 순서로 알고있는 모든 내가 추가 한 모든 문제에 대한 문제가되었습니다. 문제는 모든 다른 조합이 다소 더 독특한 특성을 지니고 있다는 것입니다.
더 좋은 방법으로 어떻게 리팩터링 할 수 있습니까? 내가 사용할 수있는 특정 디자인 패턴이 있습니까?
당신은 같은 변수의 서로 다른 값을 테스트하는 경우 'switch' 문을 사용하여 시작할 수 :
그럼 당신은 다른 변수에 따라 행동의지도를 할 수 있습니다. –
https://en.wikipedia.org/wiki/Strategy_pattern – Bergi