1

jsLint で jquery を実行したところ、すべてのタブをスペースに置き換える必要があるとのことでした。そうですか?また、スペースとタブを混在させることは重要ですか?

それが役立つ場合は、コードの一部を次に示します (私の理解では、stackoverflow はすべてのタブをスペースに変換します)。

function modal_dialog(share_div)
{
    $("#share_div_" + share_div).dialog({
        autoOpen: false,
        modal: true,
        height: 158,
        width: 400
    });

    $("#share_div_" + share_div).dialog("open");

    $(document).on("click", ".ui-widget-overlay", function() {
        $("#share_div_" + share_div).dialog("close");
    });
}
4

1 に答える 1

6

jQuery は単なる JavaScript ライブラリであるため、JavaScript コードでタブまたはスペースを使用する必要があるかどうかを実際に尋ねています。

答えは、本当にあなた次第です。JSLint は、非常に独断的な作者によって書かれた、非常に独断的なプログラムです。彼の意見は耳を傾ける価値がありますが、福音として受け止めるべきではありません。多くの経験豊富な JavaScript 開発者は、他の点では彼に同意していても、一部の問題については異なる意見を持っています。

JSLint のより柔軟なバージョンが必要な場合は、JSLint のフォークである JSHint を試しください。これは、カスタマイズするためのオプションが多く、あまり重要でないことについてはあまり気にしません。

特にスペースとタブは、コードに一貫性があり、他の開発者が理解できる方法でインデントしている限り、重要ではありません。また、コードの保守が容易です。スペースとタブを混在させるのはよくありません。どちらかを選んでください。少なくとも、特定のソース ファイルにそれらを混在させるべきではありません。

スペースやタブについて議論する必要がないと言っているわけではありません。私自身はタブが好きで、タブを使用する正当な理由があります。他の人はスペースを使用し、それらを使用する正当な理由があります。それは、私たち一人一人にとってどの理由がより重要であるかによって異なります。

他の人のファイルを編集している場合は、その人が使用しているインデント スタイルを確認し、それに固執してください。私が非常に役立つと思うことの 1 つは、Komodoのようなエディターを使用することです。これは、タブまたはスペースの使用と、スペースの場合はどれだけのインデントが使用されているかを自動的に検出し、個々のソース ファイルに一致するようにインデント設定を設定します。これにより、自分の個人的な慣習に従わなくても、編集中のファイルとの一貫性を保つことが容易になります。

コードをインデントする方法は見栄えがよく、興味深いのは、タブまたはスペースのいずれかがあなたのスタイルで同じように機能することです。私が変更を提案する1つのことはこれです:

function modal_dialog(share_div)
{
    // ...
}

他の場所では、代わりに開き中括弧を同じ行に置きます。

$(document).on("click", ".ui-widget-overlay", function() {
    $("#share_div_" + share_div).dialog("close");
});

タブとスペースのように、これは一貫性を保つことが最善のケースです。いずれかのブレース スタイルを選択して、どこでも使用できます。

多くの言語では、これをどのように書いても問題ありません。しかし、JavaScript では同じ行に中括弧を配置することが明らかに勝者です。

function foo()
{
    return
    {
        a: 1,
        b: 2
    }
}

これは、セミコロンの自動挿入による構文エラーであることが判明しました。ここのステートメントと同じ行に中括弧を配置する必要があります。return(試してみてください。)returnそのようにしなければならないので、どこでもそのようにすることができます:

function foo() {
    return {
        a: 1,
        b: 2
    }
}

一部のコーディング スタイルは、タブではうまく機能しませ。たとえば、このように 1 行に収まらない長い関数呼び出しを記述する方法などです。

    someFunctionWithLongName(firstParam,
                             secondParam + somethingAdded - subtracted,
                             thirdParam);

タブを使用する場合、タブの設定が正確に正しい場合にのみ、secondParamthirdParamが一致します。firstParamこれが、多くの人がスペースを好む理由の 1 つです。少なくとも、「タブはインデントに、スペースは配置に」と言います。つまり、someFunctionWithLongName呼び出しの先頭までタブを使用し、その後、2 番目と 3 番目のパラメーターの追加の位置合わせにスペースを使用します。

このアプローチはメンテナンスの頭痛の種だと思います。別の書式設定スタイルで問題を回避することを好みます。

    someFunctionWithLongName(
        firstParam,
        secondParam + somethingAdded - subtractThis,
        thirdParam
    );

ここでも、タブまたはスペースのどちらを選択してもかまいません。インデントはどちらの方法でも問題なく機能し、タブとスペースの組み合わせについて心配しなければならない列の配置はありません。

興味深いことに、これはまさにコード ブロックをインデントする方法でもあります。

    if( a ) {
        b();
        c();
    }

インデントに関して {} と () を同じように扱えることは、私にとって非常に魅力的です。そして、はい、私も同じように [] を行います:

    var array = [
        firstElement,
        secondElement,
        thirdElement
    ];

いいえ:

    var array = [firstElement,
                 secondElement,
                 thirdElement];
于 2013-06-27T05:31:58.827 に答える