我正在通过命令行(http://jsbeautifier.org/)使用my美化器,它的工作非常出色,除了它能处理我的较长的jquery链式语句之外:
$('#foo').closest('div')
.closest('input')
.val();
至:
$('#foo').closest('div').closest('input').val();
显然,这有点简单,但有时链接会变得有点长,或者它是一个if语句,就像这样:
if ((foo === bar) &&
c > 5 &&
d != 2)
它最终的结果是:
if ((foo === bar) && c > 5 && d != 2)
有没有人经历过这种情况并修改了美化器,或者知道一个变通方法或替代解析器(我使用VIM,所以我不喜欢使用像aptana这样的IDE解决方案,除非它可以通过命令行调用)?或者我只需要调整我的代码来避免长的if条件(如果是这样的话,最好的方法是把它抽象成可读性更好的东西)?
谢谢!
发布于 2011-09-21 16:27:18
长if条件很难回读和调试。您可以尝试执行以下操作:
var matchesBar = (foo === bar),
greaterThenFive = (c > 5),
notTwo = (d != 2);
if (matchesBar && greaterThenFive && notTwo) {
// Do stuff
}
如果您为变量指定有意义的名称,就可以分离出真实部分和它们的比较,这样if
语句就更容易阅读了。
它不会直接回答您的问题re: jsbeautifier,但如果没有其他解决方法,它可能有助于提高易读性。
发布于 2014-07-02 22:41:18
您可以在命令行中传递-B
或--break-chained-methods
来保留这些换行符。
对于if
和其他语句,一旦达到限制,请使用-w
或--wrap-line-length
来打破它们。
从source -B, --break-chained-methods Break chained method calls across subsequent lines -w, --wrap-line-length Maximum characters per line (0 disables) [250]
除此之外,根据您的代码,最好不要有很长的if
或任何语句。我个人尽量限制在80个字符以内,但有时不得不接受更长的语句(特别是在处理遗留项目时)。
https://stackoverflow.com/questions/6412822
复制相似问题