有相当几的IRC服务器代码

我工作的一个小 IRC客户端,Adobe AIR的和我开始通过支持只有少数这些最初,然后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 ]( );
}

但同样在这种情况下,我觉得自己有在回归高风险,我不知道它的价值只是努力避免有长的switch语句,其长度的缘故。

有帮助吗?

解决方案

你为什么不保持一个哈希(一个JavaScript {}对象)的代码为键和功能的价值?然后,对于小件的代码,你可以使用匿名函数,并为更大的代码块,你可以只需要一个已经写函数的引用。我不知道什么IRC,但这里有一个小例子:

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

一个坏榜样的那种,而是你的想法。


修改:如果你认为你可以很容易,没有问题保持这么长的switch语句,那么我认为这是荒谬的重写你的程序,而只需删除switch。但我知道,我个人更愿意保持一个哈希表像上面不是一个巨大的switch声明,原因是多方面的。所以,这取决于你。似乎是一个反问,如果你继续坚持,你会重写代码的唯一原因是为了摆脱switch声明。

其他提示

为什么不保持与预定义的出口点的参数文件中的开关,其参数一起 在启动时读取该文件,并保持在存储器

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top