[英]Adhering to a max length setting with jshint
在编写javascript时,我看到一些建议坚持最大80个字符的行长,例如Google,npm,Node.js,Crockford。 但是,在某些情况下,我看不出如何做到最好。 请看下面的例子
MongoClient.connect('mongodb://localhost:27017/sampleDatabase', function(err, database) {
if(err) {
throw err;
}
db = database;
});
这将引发jshint警告,因为它超过80个字符。 现在,您是选择忽略这种情况下的警告,还是选择解决方案,例如
MongoClient.connect('mongodb://localhost:27017/sampleDatabase',
function(err, database) {
if(err) {
throw err;
}
db = database;
}
);
如果您可以重用url
变量,那么Andy's是一个不错的选择。 如果是一个镜头,就像经常这样的通话,我可能会做这样的事情...
/*jslint sloppy:true, white:true, browser: true, maxlen:80 */
/*global MongoClient */
var dbErrHand, db;
dbErrHand = function(err, database) {
if(err) {
throw err;
}
db = database; // Killing me with the global spaghetti! ;^)
};
MongoClient.connect(
'mongodb://localhost:27017/sampleDatabase',
dbErrHand
);
这样,您的代码更具表现力,并且您知道要连接到的数据库,尽管Andy只需将var url
更改为var mongoSampleDb
或类似内容即可获得相同的优势。
我喜欢拉出这些函数,以便您可以直观地理解它们是逻辑上离散的部分,即使我意识到如果将其放在connect
调用中的单独行中,此处的字符数也不超过80个。 也会认为代码也是在您的应用程序中重用的候选者。
拔出函数也是一个很好的一般习惯,这样就不会在循环内意外创建函数 。 [1]
而且,当然,您仍有机会以疯狂的长字符串结尾,并且必须执行类似的操作……
MongoClient.connect(
'mongodb://whoLetFredNameThisServerBecauseItsTooLong.FredsCompany.com:27017'
+ '/sampleDatabase',
dbErrHand
);
嵌套代码中良好的空格会进一步加剧该问题,这可能会使Andy在任何循环/ ifs /嵌套代码之外设置此类变量的想法+1。 在某个时候,关闭maxlen
可能值得。
但是括号处理是最主观的决定之一,尤其是在JavaScript中,没有嗅到一个很好的先验答案。 有些鬃毛喜欢我的每行参数代码,或者更喜欢(
在自己的行上,像这样...
MongoClient.connect
(
'mongodb://localhost:27017/sampleDatabase',
dbErrHand
);
令人惊讶的是,JSLint仍然为您提供了足够的自我表达空间! ; ^)
[1] 裙带关系的问题链接警报,尽管它是我谷歌搜索的第一个。 可能是Google偏向我(我)的结果的一个例子。
我会将URL分离到一个新变量中。
var url = 'mongodb://localhost:27017/sampleDatabase';
MongoClient.connect(url, function(err, database) {
if(err) {
throw err;
}
db = database;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.