2011-06-20 31 views
3

我使用jsbeautifier通過命令行(http://jsbeautifier.org/),它比它的貓出色的作品等我長的jQuery鏈語句:jsbeautify 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) 

任何人都經歷這個和改性的美化或知道一種變通方法或備用分析器(I使用VIM,所以我寧願不使用像集錦,除非它的IDE溶液可以通過命令行調用)?或者我需要調整我的代碼以避免長時間的條件(如果是這種情況,最好的辦法是將它抽象爲更具可讀性的東西)?

謝謝!

+0

我一直有這個意思,自己看看+1 – Zevan

+0

已加星標,總是困擾我。 – adardesign

回答

0

長條件很難回讀和調試。你可以嘗試以下方法:

var matchesBar = (foo === bar), 
    greaterThenFive = (c > 5), 
    notTwo = (d != 2); 

if (matchesBar && greaterThenFive && notTwo) { 
    // Do stuff 
} 

如果你給變量有意義的名字,你分離出來工作了truthy部分和他們比較,與if聲明是稍微容易閱讀。

它並不直接回答您的問題:jsbeautifier,但如果沒有其他解決方法,它可能有助於易讀性。

0

您可以在命令行中傳遞-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個字符的限制,但有時候不得不接受更長的陳述(特別是在處理遺留項目時)。