joo*_*ool 7 javascript indentation typescript visual-studio-code
在 VSCode 中,在编写 javascript/typescript 时,我经常编写不带大括号的 if。特别是对于提早退出。
foo() {
...
if(...)
return;
...
for(...) {
...
if(...)
continue;
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
在 VSCode 中,返回/继续/无论我放在新行上的内容都不会缩进。有这方面的设置吗?
我只有 Chrome 扩展的图标和调试器。
这是 VSCode 格式化它的方式:
事实上,这并不是唯一发生的奇怪的缩进!
这看起来不错:
但是,如果我将参数放在不同的行上。(长变量名可能需要):
该函数的其余部分最终缩进,文件的其余部分也是如此。
我尝试重新安装 VSCode,但没有帮助。
有什么建议么?
这不会回答您关于如何让 VS Code 执行您想要的操作的问题,但我可以提供一些建议:省略花括号可能很危险。它导致 Apple 实施 SSL 时出现重大安全缺陷:臭名昭著的goto 失败错误。
这是他们遇到麻烦的代码:
if ((err = SSLFreeBuffer(&hashCtx)) != 0)
goto fail;
if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
goto fail;
Run Code Online (Sandbox Code Playgroud)
看到问题了吗?
大括号并不能完美地防止此类错误,但它们确实有帮助。goto fail当您使用它们时,您出现错误的可能性要小得多。
一些开发人员,包括我自己,认为只有当您将if语句写成一行语句时才可以省略大括号。如果您只是简单地从函数中提前退出,那么这样就可以了:
if( ... ) return;
Run Code Online (Sandbox Code Playgroud)
goto fail当它位于一行上时,产生错误的可能性要小得多。但是当你把它分成两行时,花括号是必需的:
if( ... ) {
return;
}
Run Code Online (Sandbox Code Playgroud)
或者:
if( ... ) {
console.log( 'debug message' );
return;
}
Run Code Online (Sandbox Code Playgroud)
让我们尝试一下不带花括号的情况。首先我们有:
if( ... )
return;
Run Code Online (Sandbox Code Playgroud)
不用担心,这段代码可以按预期工作。现在让我们添加调试消息:
if( ... )
console.log( 'debug message' );
return;
Run Code Online (Sandbox Code Playgroud)
哎呀!
由于您已经将左大括号与语句放在同一行if(我完全同意),因此只需要多花一行来添加右大括号。要么让你的早期返回单行,要么使用花括号。goto fail这将避免您自己最终出现错误的风险。
| 归档时间: |
|
| 查看次数: |
1253 次 |
| 最近记录: |