javascript - 在 JS 中格式化简单 when 函数的最佳方式

标签 javascript readability code-readability

我在 Ruby 中找到了这段代码(来自 here ):

DX = { E => 1, W => -1, N =>  0, S => 0 }

我正在考虑如何在 JS 中最好地格式化它,因为它缺少“when”功能。

作为引用,N、S、E 和 W 是“方向”,并且具有如下别名:const N = 1, S = 2, E = 4, W = 8;

我本来想做一个快速箭头功能,但后来就这样了:

function DX(dir) {
    if(dir==E) return 1;
    if(dir==W) return -1;
    if(dir==N) return 0;
    if(dir==S) return 0;
}

我觉得有点长,所以我试着缩短它:

function DX(dir) {
    if(dir==E) return 1;
    if(dir==W) return -1;
    return 0;
}

再一次:

function DX(dir) {
    return dir==E ? 1 : dir==W ? -1 : 0;
}

但是现在我们遇到了这个代码可读性不佳的问题。所以我决定记录它:

// returns the distance in x traveled by that direction
// E => 1, W => -1, N =>  0, S => 0
function DX(dir) {
    return dir==E ? 1 : dir==W ? -1 : 0;
}

最后,我将它转换为变量语法和箭头函数:

let DX = (dir) => dir==E ? 1 : dir==W ? -1 : 0;

显然,所有这些代码都有效,但我的问题是作为一种风格,在您看来,无论是在行业中还是在您具体工作的地方,它都被认为是“最佳”?我认为可读性高于一切,那么您认为哪种代码最可读?我个人更喜欢带有文档的部分。

最佳答案

通过使用上面几个用户建议的对象,我们可以使这段代码更简单。但是,我们遇到了对象使用文字字符串“N”、“S”、“E”和“W”而不是变量的数值 1、2、4 和 8 的问题。

我找到了这个问题的答案on SO这只是添加方括号(在 ES6 中):

const N = 1, S = 2, E = 4, W = 8;
const DX = { [E]: 1, [W]: -1, [N]: 0, [S]: 0 };

它可以用于:DX[dir]

关于javascript - 在 JS 中格式化简单 when 函数的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60586229/

相关文章:

javascript - 更改 CSS 类定义

java - 重构空的 if 语句

java - Java方法中的字符串常量与变量

javascript - Array.reduce 中的参数名称应该是什么?

javascript - "更改为双引号

javascript - 无法使用 Chrome 扩展程序单击按钮,但可以在开发人员工具中单击

javascript - 如何制作类似 "webmail"的文件附加/上传

php - 省略 PHP 三元和空值合并运算符中的 'else'

python - Python 代码可以像 Javascript 一样被压缩吗?

php - 如何使 SQL 查询在 PHP 中更具可读性?