VS 2008 リファクタリング サポートを使用するか、ReSharper を購入する必要がありますか?
VS 2008 のリファクタリング サポートでは実現できない、ReSharper で実現できる本当に優れた機能にはどのようなものがありますか?
VS 2008 リファクタリング サポートを使用するか、ReSharper を購入する必要がありますか?
VS 2008 のリファクタリング サポートでは実現できない、ReSharper で実現できる本当に優れた機能にはどのようなものがありますか?
30 日間の無料試用版をダウンロードして、気に入るかどうか試してみませんか? R# のインストールに慣れると、元に戻したくなくなると確信しています。
ドキュメントの右側にある緑/オレンジ/赤のエラー バーだけで十分ですが、リファクタリングははるかに高速であり、コードのクリーンアップ (CTRL + E + F) など、ドキュメントを次のように再フォーマットする非常に便利な機能が他にもいくつかあります。あなたのスタイルの好みに。
Resharper で私が気に入っている点の 1 つは、カスタム タイプ メンバー レイアウトを作成し、それを使用してすべてのファイルをフォーマットできることです。
これは、すべてのフィールド/プロパティ/メソッド/コンストラクター/オーバーライド/インターフェイス実装/デリゲート/列挙型などを好きな方法で並べ替え (名前によるサブ並べ替え、アクセス修飾子などを含む)、さらにそれらを領域に入れることができることを意味します。あなたが選択した場合。
たとえば、私が現在コーディングしているガイドラインは次のとおりです。
CONSIDER grouping members into the following sections in the specified order:
• All fields
• All constructors
• Public and protected properties
• Public and protected methods
• Events
• All explicit interface implementations
• Internal members
• Private members
• All nested types
When more than one access modifier is in a section, the most visible access modifier should come first (e.g. public before protected).
DO use #region blocks around not publicly callable and explicit interface implementation groups.
#region internal members
...
#endregion
#region private members
...
#endregion
そして、これが私がそれらを一致させるために使用するテンプレートです:
<?xml version="1.0" encoding="utf-8" ?>
<!--
I. Overall
I.1 Each pattern can have <Match>....</Match> element. For the given type declaration, the pattern with the match, evaluated to 'true' with the largest weight, will be used
I.2 Each pattern consists of the sequence of <Entry>...</Entry> elements. Type member declarations are distributed between entries
I.3 If pattern has RemoveAllRegions="true" attribute, then all regions will be cleared prior to reordering. Otherwise, only auto-generated regions will be cleared
I.4 The contents of each entry is sorted by given keys (First key is primary, next key is secondary, etc). Then the declarations are grouped and en-regioned by given property
II. Available match operands
Each operand may have Weight="..." attribute. This weight will be added to the match weight if the operand is evaluated to 'true'.
The default weight is 1
II.1 Boolean functions:
II.1.1 <And>....</And>
II.1.2 <Or>....</Or>
II.1.3 <Not>....</Not>
II.2 Operands
II.2.1 <Kind Is="..."/>. Kinds are: class, struct, interface, enum, delegate, type, constructor, destructor, property, indexer, method, operator, field, constant, event, member
II.2.2 <Name Is="..." [IgnoreCase="true/false"] />. The 'Is' attribute contains regular expression
II.2.3 <HasAttribute CLRName="..." [Inherit="true/false"] />. The 'CLRName' attribute contains regular expression
II.2.4 <Access Is="..."/>. The 'Is' values are: public, protected, internal, protected internal, private
II.2.5 <Static/>
II.2.6 <Abstract/>
II.2.7 <Virtual/>
II.2.8 <Override/>
II.2.9 <Sealed/>
II.2.10 <Readonly/>
II.2.11 <ImplementsInterface CLRName="..."/>. The 'CLRName' attribute contains regular expression
II.2.12 <HandlesEvent />
-->
<Patterns xmlns="urn:shemas-jetbrains-com:member-reordering-patterns">
<!--Do not reorder COM interfaces-->
<Pattern>
<Match>
<And Weight="100">
<Kind Is="interface"/>
<HasAttribute CLRName="System.Runtime.InteropServices.InterfaceTypeAttribute"/>
</And>
</Match>
</Pattern>
<!--Special formatting of NUnit test fixture-->
<Pattern RemoveAllRegions="true">
<Match>
<And Weight="100">
<Kind Is="class"/>
<HasAttribute CLRName="NUnit.Framework.TestFixtureAttribute" Inherit="true"/>
</And>
</Match>
<!--Setup/Teardow-->
<Entry>
<Match>
<And>
<Kind Is="method"/>
<Or>
<HasAttribute CLRName="NUnit.Framework.SetUpAttribute" Inherit="true"/>
<HasAttribute CLRName="NUnit.Framework.TearDownAttribute" Inherit="true"/>
<HasAttribute CLRName="NUnit.Framework.FixtureSetUpAttribute" Inherit="true"/>
<HasAttribute CLRName="NUnit.Framework.FixtureTearDownAttribute" Inherit="true"/>
</Or>
</And>
</Match>
<Group Region="Setup/Teardown"/>
</Entry>
<!--All other members-->
<Entry/>
<!--Test methods-->
<Entry>
<Match>
<And Weight="100">
<Kind Is="method"/>
<HasAttribute CLRName="NUnit.Framework.TestAttribute" Inherit="false"/>
</And>
</Match>
<Sort>
<Name/>
</Sort>
</Entry>
</Pattern>
<!--Default pattern-->
<Pattern RemoveAllRegions="true">
<!--public delegate-->
<Entry>
<Match>
<And Weight="100">
<Access Is="public"/>
<Kind Is="delegate"/>
</And>
</Match>
<Sort>
<Name/>
</Sort>
<Group/>
</Entry>
<!--public enum-->
<Entry>
<Match>
<And Weight="100">
<Access Is="public"/>
<Kind Is="enum"/>
</And>
</Match>
<Sort>
<Name/>
</Sort>
<Group/>
</Entry>
<!--fields and constants-->
<Entry>
<Match>
<Or>
<Kind Is="constant"/>
<Kind Is="field"/>
</Or>
</Match>
<Sort>
<Kind Order="constant field"/>
<Static/>
<Readonly/>
<Access Order="public"/>
<Name/>
</Sort>
<Group/>
</Entry>
<!--Constructors. Place static one first-->
<Entry>
<Match>
<Kind Is="constructor"/>
</Match>
<Sort>
<Static/>
</Sort>
<Group/>
</Entry>
<!--public and protected properties, indexers-->
<Entry>
<Match>
<And>
<Or>
<Kind Is="property"/>
<Kind Is="indexer"/>
</Or>
<Or>
<Access Is="public"/>
<Access Is="protected"/>
</Or>
</And>
</Match>
<Sort>
<Access Order="public"/>
<Name/>
</Sort>
<Group/>
</Entry>
<!-- Methods -->
<Entry>
<Match>
<And>
<Kind Is="method"/>
<Or>
<Access Is="public"/>
<Access Is="protected"/>
</Or>
</And>
</Match>
<Sort>
<Access Order="public"/>
<Name/>
</Sort>
<Group/>
</Entry>
<!-- Events-->
<Entry>
<Match>
<Kind Is="event"/>
</Match>
<Sort>
<Name/>
</Sort>
<Group/>
</Entry>
<!--interface implementations-->
<Entry>
<Match>
<And Weight="100">
<Kind Is="member"/>
<ImplementsInterface/>
</And>
</Match>
<Sort>
<ImplementsInterface Immediate="true"/>
<Kind Order="property"/>
<Name/>
</Sort>
<Group/>
</Entry>
<!--internal properties, indexers, methods-->
<Entry>
<Match>
<And>
<Or>
<Kind Is="property"/>
<Kind Is="indexer"/>
<Kind Is="method"/>
</Or>
<Access Is="internal"/>
</And>
</Match>
<Sort>
<Access Order="public"/>
<Kind Order="property"/>
<Name/>
</Sort>
<Group Region="Internal Members"/>
</Entry>
<!--private properties, indexers, methods-->
<Entry>
<Match>
<And>
<Or>
<Kind Is="property"/>
<Kind Is="indexer"/>
<Kind Is="method"/>
</Or>
<Access Is="private"/>
</And>
</Match>
<Sort>
<Access Order="public"/>
<Kind Order="property"/>
<Name/>
</Sort>
<Group Region="Private Members"/>
</Entry>
<!--all other members-->
<Entry/>
<!--nested types-->
<Entry>
<Match>
<Kind Is="type"/>
</Match>
<Sort>
<Name/>
</Sort>
<Group/>
</Entry>
</Pattern>
</Patterns>
これにより、単一のキーボード ショートカットと同じくらい簡単に、会社のコーディング スタイルに合わせてコードをフォーマットできます。
Resharperを使用します。私はそれを何年も使用しました。ショートカットを学んだら、それはあなたがあなたのために仕事をするために別の人を雇ったようなものです:)
IntelliJ Ideaと同じキーを使用するように設定できることに注意してください。したがって、Javaを実行する必要がある場合は、(非常に優れた)JavaIDEの使用方法をすでに知っているはずです。
また、これを読んでください- 31日間のリシャーパー
30日間のトライアルを試しましたが、今はR#に夢中です
Resharper について私が気に入っていることの 1 つは、Ctrl-Shift-Alt-Up または Down を使用して、ファイル内でメソッド/フィールド/プロパティなどを上下に移動できることです (それに隣接するメソッド/フィールド/プロパティの真上または真下)。または、ファイル構造ブラウザーを使用して、ドラッグ アンド ドロップでファイルの構造を表示および再配置することができます。
少なくともReSharperを試してみてください。これは、デフォルトの VS2008 リファクタリングよりもはるかに多くのことを行い、単体テストを追跡するのにも優れています。
無料トライアルがあるので、試してみても損はありません。
私はしばらくそれを使用してきましたが、単純なバニラの Visual Studio に戻ることはできなかったことを認めなければなりません...
ところで:リファクタリングもあります!プロ。試用版をしばらく使用して気に入りました(まだ購入していません)。
ReSharper と同様に、より多くのリファクタリングを提供し、Visual Studio リファクタリング ツールよりも高速です。