2009-06-27 7 views
1

내가 작은 IRC client for Adobe AIR 일하고 아주 a few of IRC server codesirc 서버 코드를 처리하기 위해 switch 문을 사용하는 것은 터무니없는 일일까요?

있다, 나는 처음에이 중 일부만을 지원함으로써 시작하고 스위치 문이 나쁜 생각처럼 보이지 않았다. 그러나 점점 더 많은 것을 지원함에 따라 switch 구문은 점점 길어지고 있으며, 통제가 다소 벗어난 것처럼 느껴집니다. 한 가지 문제는 저수준의 IRC 처리 코드를 파일에 그대로 두어 재사용 할 수 있다는 것입니다. 모든 것을 하나의 파일에 보관하고 싶습니다. 또 다른 문제는 switch 문에있는 코드 블록이 현재이 IRC 클래스의 일부로 간주되며이 명령문을 자주 사용한다는 것입니다. 변경 작업은 많은 작업이 될 것이며 회귀 분석을 도입 할 것입니다. 유일한 문제는 실제로 긴 switch 문에 대한 나의 혐오감입니다. 그렇지 않으면 작동한다는 것을 알게되고 읽을 수는 있지만 실제로 유지하기가 더 어려워지는 것은 아닙니다. 하지만 그렇게 긴 switch 문입니다. 그리고 switch 문을 포함하는 함수는 분명히 길다. : //

내가 스위치 대신에 때때로하는 일 중 하나는 스위치가 평가 한 값의 이름을 따서 명명 된 함수를 정의한다는 것입니다. 대신 스위치 :

switch (val) { 
    case: "alert": 
    alert("yo"); 
    break; 
} 

내가하는 방법이 범위에 존재하는지 확인하고 실행 확인 : 회귀 분석에서 높은 위험이처럼 그러나 다시이 경우 내가 느끼는 한

obj.alert = function () { 
    alert("yo"); 
} 

if (val in obj && isFunction(obj[ val ])) { 
    obj[ val ](); 
} 

및 길이가 길기 때문에 긴 전환문을 사용하지 않으려 고 노력할만한 가치가 있는지 확신 할 수 없습니다.

답변

3

에서의 유지 해당 인수와 함께 미리 정의 된 출구 포인트 매개 변수 파일의 스위치를 유지하지 (자바 스크립트 {} 객체) 코드를 키로 사용하고 함수를 값으로 사용 하시겠습니까? 그런 다음 코드의 작은 부분에 대해서는 익명의 함수를 사용할 수 있고 큰 코드에는 이미 작성된 함수에 대한 참조 만있을 수 있습니다. 나는 IRC에 대해 아무것도 알고 있지만, 여기에 작은 예입니다하지 않습니다 : 나쁜 예

var CodeHash = { 
    001: function() { /* Do something... */ }, 
    002: BigImportantObject.someFunction 
} 

종류,하지만 당신은 아이디어를 얻을.


편집 : 당신은 당신이 쉽게 문제없이 같은 긴 switch 문을 유지할 수 있다고 생각되면, 그럼 난 그냥 switch을 제거하기 위해 프로그램을 다시 작성하는 말도 안되는 생각합니다. 그러나 저는 개인적으로 많은 이유로 위의 해시 테이블을 거대한 switch 문보다 훨씬 유지하려고합니다. 따라서 그것은 당신에게 달려 있습니다. 코드를 다시 작성하는 유일한 이유는 switch 문을 없애는 것이라고 계속 주장한다면 수사적 질문과 같습니다.

+0

스위치를 사용할 수있는 유일한 이유 때문에이 IRC 클래스의 인스턴스를 만들 때마다 반복해서 많은 함수를 선언해야하기 때문입니다 너무 오래. 프로토 타입 객체를 사용하여 함수를 추가 할 때는 모든 인스턴스에 대해 함수를 한 번만 선언해야합니다. –

+0

그러나 스위치를 사용해야하는 경우 내 질문은 정말입니다. 그래서 당신의 대답은 아니오입니까? 나는 안된다? 재 작성을 위험에 빠뜨려야합니까? –

+0

개인적으로 거대한 switch 문을 유지하려고 시도하는 것보다 현재 일부를 다시 작성하는 것이 더 쉬울 것이라고 생각합니다. 나는 너를 모른다.하지만 나는 그것을 유지하는 것을 싫어한다. –

1

가 왜 해시를 유지하지 않는 이유는 시작시 파일을 읽고 메모리

+0

그럼 스위치의 길이가 유일한 이유 때문에 변경 사항이 위험에 처해 있다는 것에 동의하십니까? –

+0

및 프로그램 유지 관리의 유연성. 필요할 때마다 코드를 변경하는 대신 중간 수준의 사용자는 스크립트/구성 파일을 변경할 수 있으며 다시 시작하려면 –