javascript - 使用 switch 语句来处理 irc 服务器代码会很荒谬吗?

标签 javascript air switch-statement irc

相当多a few of IRC server codes

我正在做一个小的 IRC client for Adobe AIR ,我一开始只支持其中的几个,然后 switch 语句似乎不是个坏主意。但是随着我支持的越来越多,switch语句越来越长,感觉有点不受控制了。一个问题是我将低级 IRC 处理代码单独保存在一个文件中,以便可以重复使用。我想将所有内容保存在一个文件中。另一个问题是 switch 语句中的代码块目前假定是此 IRC 类的一部分,并且经常使用 this 语句。现在进行更改将需要大量工作并引入回归。唯一的问题确实是我不喜欢长的 switch 语句,否则你知道它是有效的,而且它很容易阅读,但并没有真正让它更难维护。但这是一个很长的 switch 语句。而包含 switch 语句的函数显然也很长。 ://

我有时代替开关做的一件事是定义以开关评估的值命名的函数。而不是开关:

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

我检查范围内是否存在一个方法并执行它:

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

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

但在这种情况下,我又一次觉得回归的风险很高,而且我不确定为了它的长度而避免使用长的 switch 语句是否值得。

最佳答案

为什么不保留一个散列(JavaScript {} 对象),其中代码作为键,函数作为值?然后,对于小段代码,您可以使用匿名函数,而对于大段代码,您可以只引用一个已编写的函数。我对 IRC 一无所知,但这里有一个小例子:

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

有点糟糕的例子,但你明白了。


编辑:如果您相信您可以轻松且毫无问题地维护这么长的 switch 语句,那么我认为重写您的程序只是为了删除 切换。但我知道,就我个人而言,出于多种原因,我更愿意维护一个像上面那样的哈希表,而不是一个巨大的 switch 语句。所以这取决于你。如果您坚持认为重写代码的唯一原因是摆脱 switch 语句,这似乎是一个反问。

关于javascript - 使用 switch 语句来处理 irc 服务器代码会很荒谬吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1052274/

相关文章:

javascript - HTML 脚本用于处理 Bottle 返回的消息

javascript - 为什么选项没有被覆盖?

actionscript-3 - 通过带有Flex/AS3的V3-API将视频上传到YouTube

java - 使用方法在摄氏度和华氏度之间转换

c++ - 评估几个 bool 值,打破第一个真正的 c++

javascript - JS promise : is there a neat way to resolve multiple promises as object properties?

javascript - 使用 jquery 隐藏和取消隐藏搜索 div

actionscript-3 - Flex - 在后台运行空气应用程序

air - QNXStageWebView - drawViewPortToBitmapData() 总是画一个白屏

ios - 开启 UIButton title : Expression pattern of type 'String' cannot match values of type 'String?!'