web-dev-qa-db-ja.com

CodeMaidとStylecopを使用した組織

私はかなり長い間StyleCopを使用しています(そして私はそれに慣れています)。私の友人は、CodeMaidも試してみることを勧めてくれました。私が最初に気付いたのは、使用組織の違いです。

Stylecopは、システムの使用法が最初にリストされ、システム以外の使用法が以下にリストされているアルファベット順で使用法を注文します。

CodeMaidは、アルファベット順に使用を注文しますが、最初にシステムの使用を注文しません。アルファベット順でのみご注文いただけます

私が遭遇したもう1つのことは、CodeMaidを使用すると、名前空間の外部で使用できるようになることです(そして、私が知る限り、すべての使用を名前空間内に配置する方がよい)。

使用法の正しい順序は何ですか、そして最終的にはなぜですか?

22
Kajiyama

免責事項:私はCodeMaidを書きました。

  1. システム使用ステートメントが最初の場合、Microsoftは「Windows」の導入を開始したときにVisual Studio2012のデフォルト設定を変更しました。アセンブリ。詳細はこちら: 間違った順序でソートされたディレクティブの使用

これは、[ツール]-> [オプション]-> [テキストエディター]-> [C#]-> [詳細]-> [用途を並べ替えるときに最初に[システム]ディレクティブを配置する]で簡単にVS2010のデフォルトに戻すことができます。 CodeMaidは、デフォルトでシステムディレクティブを最初に配置しないというVisualStudioで定義された設定を尊重します。

  1. 名前空間内にあるステートメントを使用する場合、それをサポートするのはバックログにあります https://trello.com/c/CLRxsIyc 。 StyleCopはそれを標準として述べているかもしれませんが、MSDNの例、Visual Studioテンプレートなどを見ると、名前空間の外部でステートメントを使用する方がはるかに一般的であることがわかります。その問題については多くの議論があり、私たちの目標は両方のアプローチをサポートすることです。

それが役に立てば幸い。 :)

53

「適切な」順序はなく、規則だけです。 Stylecopの SA1210ルール は、System名前空間が最初に配置されることを明示的に示しています。

このルールの違反は、usingディレクティブが名前空間のアルファベット順にソートされていない場合に発生します。 usingディレクティブをアルファベット順に並べ替えると、コードがわかりやすく読みやすくなり、コードで使用されている名前空間を簡単に識別できるようになります。 システム名前空間はこのルールの例外であり、常に他のすべての名前空間に先行します。詳細については、SA1208を参照してください。

ルールSA1208 は、System名前空間は他の名前空間の前にある必要があると述べており、その理由は次のとおりです。

すべてのSystemusingディレクティブをusingディレクティブの先頭に配置すると、コードがよりクリーンで読みやすくなり、コードで使用されている名前空間を簡単に識別できるようになります。

Stylecopのルールは規則であり、Codemaidはわずかに異なる規則を選択しました。あなたが好きなものを選んで、より重要な決定に進んでください。

名前空間の外にusingステートメントがあることについては、 この質問 を参照してください。

6
Patrick Quirk