簡體   English   中英

使用jshint遵守最大長度設置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM