将 if 语句放在一行更漂亮

Posted

技术标签:

【中文标题】将 if 语句放在一行更漂亮【英文标题】:Prettier putting if statement on one line 【发布时间】:2019-06-16 23:41:01 【问题描述】:

没有花括号的 if 语句格式更漂亮。

这意味着:

function getErrorMessage(response) 
    let errorMessage = null;

    if (!response.originalError.response) 
        errorMessage = 'network error';
    else 
        errorMessage = response.originalError.response.data.errorMessage;

    return errorMessage;

变成这样:

function getErrorMessage(response) 
    let errorMessage = null;

    if (!response.originalError.response) errorMessage = 'network error';
    else errorMessage = response.originalError.response.data.errorMessage;

    return errorMessage;

更不可读。

有没有办法禁用它?

【问题讨论】:

不是您的问题的答案(我赞成),但是通过完全消除您的 errorMessage 变量,您的函数可以变得更简单、更具可读性(并且效率更高)。 gist.github.com/flimzy/78be389b85d37ba7536daf5e858b8ca7 是的,我同意,只是想用我的代码作为说明 可能不是您想听到的,但是添加花括号怎么样? IMO 他们应该在那里。 是的,我添加了花括号。那解决了它。但我不明白为什么 prettier 会做出如此丑陋的格式 @OliverWatkins 可能是被动攻击性的“我的方式或高速公路”的案例,以强制使用多余的paratheses 的风格与(这是我的邪恶假设)嘲笑替代方案相结合。这就像说你不必在单语句上使用花括号,然后添加一个“证明”它是错误的,但这就是你会得到的丑陋 .这是一个很棒的包,所以很遗憾他们如此不灵活。详情见答案。 【参考方案1】:

正如在类似的question 中询问的那样,事实证明answer 是您不能也不会能够。

至于一般意义上的 WFT,嗯...显然,自以为是并不意味着 在许多人看来受到尊重和深思熟虑。这意味着它正在执行作者的意见

因此,令人惊讶的是,出乎意料的不是缺乏可配置性,而是根本没有任何选项可供设置!去看看...有人应该创建一个名为 EvenPrettierFexiblyPrettier 的新包,并提供更多选项。如果我知道怎么做,我就会去做。

【讨论】:

【参考方案2】:

我终于用 Beautify - HookyQR 扩展了 vscode https://marketplace.visualstudio.com/items?itemName=HookyQR.beautify

示例设置

文件:.jsbeautifyrc


    "brace_style": "collapse,preserve-inline",
    "max_preserve_newlines": 2,
    "end_with_newline": false

示例代码

文件:a.js

function dfs(start) 

    if (start > n)
        return;

    ans.push(start);

    for (let i = 0; i <= 9; i++)
        dfs(start * 10 + i);


【讨论】:

以上是关于将 if 语句放在一行更漂亮的主要内容,如果未能解决你的问题,请参考以下文章

为单个文件禁用更漂亮

更漂亮的将 if / else 重新格式化为单行

更漂亮 + VS 代码。返回语句后在网页上打印分号 (.js)

将 if-elif-else 语句放在一行上?

vscode 更漂亮的设置

如何使用更漂亮的特定语言