gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:56:24 24 4
gpt4 key购买 nike

相当多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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com