Quels modèles dynamiques ReSharper 4+ pour C # utilisez-vous? [fermé]


94

Quels modèles ReSharper 4.0 pour C # utilisez-vous?

Partageons-les dans le format suivant:


[Titre]

Description facultative

Raccourci: raccourci
Disponible dans: [AvailabilitySetting]

// Resharper template code snippet
// comes here

Propriétés des macros (si présentes):

  • Macro1 - Valeur - EditableOccurence
  • Macro2 - Valeur - EditableOccurence


Cela devrait-il plutôt être sur programmers.SE parce que c'est subjectif?
Timwi le

Cette question n'est pas constructive et il existe de nombreuses informations sur les modèles dynamiques de réaffectation et les modèles de studio visuel. programmingsolved.blogspot.com/2014/04/snippet-away.html
Thulani Chivandikwa

Réponses:


31

Lambda simple

Si simple, si utile - un peu lambda:

Raccourci : x

Disponible : C # où l'expression est autorisée.

x => x.$END$

Macros: aucune.


22

Implémenter la méthode 'Dispose (bool)'

Mettre en œuvre le modèle d'élimination de Joe Duffy

Raccourci: supprimer

Disponible dans: fichiers C # 2.0+ où la déclaration de membre de type est autorisée

public void Dispose()
{
    Dispose(true);
    System.GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
    if (!disposed)
    {
        if (disposing)
        {
            if ($MEMBER$ != null)
            {
                $MEMBER$.Dispose();
                $MEMBER$ = null;
            }
        }

        disposed = true;
    }
}

~$CLASS$()
{
    Dispose(false);
}

private bool disposed;

Propriétés des macros :

  • MEMBER - Suggérer une variable de System.IDisposable - Occurence modifiable # 1
  • CLASS - Contenant le nom du type

14

Créer un nouveau montage de test unitaire pour un type

Raccourci: ntf
Disponible dans: fichiers C # 2.0+ où la déclaration de membre de type ou la déclaration d'espace de noms est autorisée

[NUnit.Framework.TestFixtureAttribute]
public sealed class $TypeToTest$Tests
{
    [NUnit.Framework.TestAttribute]
    public void $Test$()
    {
        var t = new $TypeToTest$()
        $END$
    }
}

Macros:

  • TypeToTest - aucun - # 2
  • Test - aucun - V

13

Vérifiez si une chaîne est nulle ou vide.

Si vous utilisez .Net 4, vous préférerez peut-être utiliser string.IsNullOrWhiteSpace ().

Raccourci : sne

Disponible en : C # 2.0+ où l'expression est autorisée.

string.IsNullOrEmpty($VAR$)

Propriétés de la macro :

  • VAR - suggère une variable de type chaîne. Modifiable = vrai.

11

Créer un nouveau cas de test unitaire autonome

Raccourci: ntc
Disponible dans: fichiers C # 2.0+ où la déclaration de membre de type est autorisée

[NUnit.Framework.TestAttribute]
public void $Test$()
{
    $END$
}

Macros:

  • Test - aucun - V

10

Déclarez un enregistreur log4net pour le type actuel.

Raccourci: journal

Disponible dans: fichiers C # 2.0+ où la déclaration de membre de type est autorisée

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof($TYPE$));

Propriétés des macros :

  • TYPE - Contenant le nom du type

Avec re-sharper, pourquoi ne pas l'utiliser? statique privé en lecture seule ILog _Logger = LogManager.GetLogger (typeof ($ CurrType $)); avec $ CurrType $: contenant le nom du type
Henrik

Parce que si je change le nom du type plus tard, je devrais également mettre à jour cette ligne de code. Le mien est plus dynamique.
Chris Brandsma

ReSharper renomme automatiquement toutes les instances d'un nom de type. GetType () est également plus lent.
Richard Dingwall

9

Test d'unité de test MS

Nouveau test MS Test Unit utilisant la syntaxe AAA et la convention de dénomination trouvée dans l' Art Of Unit Testing

Raccourci: testing (ou tst, ou ce que vous voulez)
Disponible dans: fichiers C # 2.0+ où la déclaration de membre de type est autorisée

[TestMethod]
public void $MethodName$_$StateUnderTest$_$ExpectedBehavior$()
{
    // Arrange
    $END$

    // Act


    // Assert

}

Propriétés des macros (si présentes):

  • MethodName - Le nom de la méthode testée
  • StateUnderTest - L'état que vous essayez de tester
  • ExpectedBehavior - Ce que vous attendez de vous

8

Vérifiez si la variable est nulle

Raccourci: ifn
Disponible dans: fichiers C # 2.0+

if (null == $var$)
{
    $END$
}

Vérifiez si la variable n'est pas nulle

Raccourci: ifnn
Disponible dans: fichiers C # 2.0+

if (null != $var$)
{
    $END$
}

15
Comment cette transition du C ++ au C # vous a-t-elle traité?
Ty.

Va bien avec 'Exécuter la complétion intelligente' en tant que macro pour $ var $
mklein

Belles "Conditions Yoda" !! ... imprudente cette façon de coder est ;-))
bytedev

7

Écrire un résumé conforme à StyleCop pour le constructeur de classe

(si vous êtes fatigué de taper constamment un long résumé standard pour chaque constructeur afin qu'il soit conforme à la règle StyleCop SA1642)

Raccourci: csum

Disponible en: C # 2.0+

Initializes a new instance of the <see cref="$classname$"/> class.$END$

Macros:

  • classname - Contenant le nom du type - V

7

Assert.AreEqual

Modèle simple pour ajouter des assertions à un test unitaire

Raccourci : ae
Disponible dans : dans les fichiers C # 2.0+ où l'instruction est autorisée

Assert.AreEqual($expected$, $actual$);$END$

Version courante:

Assert.That($expected$, Is.EqualTo($actual$));$END$

7

Beaucoup de Lambdas

Créez une expression lambda avec une déclaration de variable différente pour une imbrication facile.

Raccourci: la, lb, lc

Disponible dans: fichiers C # 3.0+ où l'expression ou la clause de requête est autorisée

la est défini comme:

x => x.$END$

lb est défini comme:

y => y.$END$

lc est défini comme:

z => z.$END$

Ceci est similaire à Sean Kearon ci-dessus, sauf que je définis plusieurs modèles dynamiques lambda pour une imbrication facile des lambdas. " la " est le plus couramment utilisé, mais d'autres sont utiles lorsqu'il s'agit d'expressions comme celle-ci:

items.ForEach(x => x.Children.ForEach(y => Console.WriteLine(y.Name)));

est-il correct d'utiliser des noms x, y pour les arguments lambda? si vous avez des lambdas imbriquées de deux à trois niveaux, vous ne voulez probablement pas mémoriser ce que signifie x, y, z à chaque niveau. Compte tenu de votre exemple, j'irais avec items.ForEach (item => ... et item.Children.ForEach (child => ... de sorte qu'à la fin j'aurais child.Name au lieu de y.Name. Je don Je ne pense pas que la dénomination des arguments lambdas puisse être traitée de la même manière que les index de boucle for i, j, k
Ilya Ivanov

6

Attendez-le ...

Pause pour l'entrée utilisateur avant la fin d'une application console.

Raccourci: pause

Disponible dans: fichiers C # 2.0+ où l'instruction est autorisée

System.Console.WriteLine("Press <ENTER> to exit...");
System.Console.ReadLine();$END$

J'utiliserais Console.ReadKey(true);et permettrais d'appuyer sur n'importe quelle touche.
MasterMastic

6

Génération de propriété de dépendance

Génère une propriété de dépendance

Raccourci: dp
Disponible en: C # 3.0 où la déclaration de membre est autorisée

public static readonly System.Windows.DependencyProperty $PropertyName$Property =
        System.Windows.DependencyProperty.Register("$PropertyName$",
                                                   typeof ($PropertyType$),
                                                   typeof ($OwnerType$));

    public $PropertyType$ $PropertyName$
    {
        get { return ($PropertyType$) GetValue($PropertyName$Property); }
        set { SetValue($PropertyName$Property, value); }
    }

$END$

Propriétés des macros (si présentes):

PropertyName - Aucune macro - # 3
PropertyType - Type d'
estimation attendu à ce stade - # 2 OwnerType - Contenant le nom du type - aucune occurrence modifiable


5

Notifier la propriété modifiée

C'est mon préféré car je l'utilise souvent et cela fait beaucoup de travail pour moi.

Raccourci : npc

Disponible en : C # 2.0+ où l'expression est autorisée.

if (value != _$LOWEREDMEMBER$)
{
  _$LOWEREDMEMBER$ = value;
  NotifyPropertyChanged("$MEMBER$");
}

Macros :

  • MEMBER - Contenant le nom du type de membre. Non modifiable. Remarque: assurez-vous que celui-ci est le premier dans la liste.
  • LOWEREDMEMBER - Valeur de MEMBER avec le premier caractère en minuscule. Non modifiable.

Utilisation : à l'intérieur d'un paramètre de propriété comme celui-ci:

private string _dateOfBirth;
public string DateOfBirth
{
   get { return _dateOfBirth; }
   set
   {
      npc<--tab from here
   }
}

Cela suppose que votre variable de sauvegarde commence par un "_". Remplacez-le par tout ce que vous utilisez. Cela suppose également que vous avez une méthode de changement de propriété quelque chose comme ceci:

private void NotifyPropertyChanged(String info)
{
   if (PropertyChanged != null)
   {
      PropertyChanged(this, new PropertyChangedEventArgs(info));
   }
}

En réalité, la version de ce que j'utilise est basée sur lambda («cos I love my lambdas!) Et produit le ci-dessous. Les principes sont les mêmes que ci-dessus.

public decimal CircuitConductorLive
{
   get { return _circuitConductorLive; }
   set { Set(x => x.CircuitConductorLive, ref _circuitConductorLive, value); }
}

C'est alors que je n'utilise pas le PostSharp extrêmement élégant et utile pour faire tout INotifyPropertyChanged sans effort , c'est-à-dire.


5

Raccourci rapide ExpectedException

Juste un raccourci rapide à ajouter à mes attributs de test unitaire.

Raccourci : ee

Disponible dans : Disponible dans: Fichiers C # 2.0+ où la déclaration de membre de type est autorisée

[ExpectedException(typeof($TYPE$))]

Juste un petit mot qu'il a été une version couple maintenant que ExpectedException a été dépréciée en NUnit en faveur de l' utilisation Assert.Throws <>
Stécy

Oui, s'il vous plaît, tout le monde arrête d'utiliser ExpectedExceptionAttribute, voyez toujours les développeurs utilisant MSTest l'utiliser même aujourd'hui :-(
bytedev

5

Mappage des propriétés d'AutoMapper

Raccourci: fm

Disponible dans: fichiers C # 2.0+ où l'instruction est autorisée

.ForMember(d => d$property$, o => o.MapFrom(s => s$src_property$))
$END$

Macros:

  • propriété - occurrence modifiable
  • src_property - occurrence modifiable

Remarque:

Je laisse le «point» lambda désactivé pour pouvoir frapper. immédiatement et obtenez la propriété intellisense. Nécessite AutoMapper ( http://automapper.codeplex.com/ ).


4

Créer un stub de scénario de test pour NUnit

Celui-ci pourrait servir de rappel (de fonctionnalité à implémenter ou tester) qui apparaît dans le lanceur de test unitaire (comme tout autre test ignoré),

Raccourci: nts
Disponible dans: fichiers C # 2.0+ où la déclaration de membre de type est autorisée

[Test, Ignore]
public void $TestName$()
{
    throw new NotImplementedException();
}
$END$

Je fais une variation à ce sujet, mais avec Assert.Fail () explicite dans le corps: aleriel.com/blog/2010/04/07/replace-paper-with-unit-tests
Adam Lear

4

Invoquer si nécessaire

Utile lors du développement d'applications WinForms dans lesquelles une méthode doit pouvoir être appelée à partir de threads non-UI, et cette méthode doit ensuite rassembler l'appel sur le thread UI.

Raccourci : inv

Disponible dans : L'instruction de fichiers C # 3.0+ est autorisée

if (InvokeRequired)
{
    Invoke((System.Action)delegate { $METHOD_NAME$($END$); });
    return;
}

Macros

  • METHOD_NAME - Contenant le nom du membre de type

Vous utiliseriez normalement ce modèle comme première instruction dans une méthode donnée et le résultat ressemble à:

void DoSomething(Type1 arg1)
{
    if (InvokeRequired)
    {
        Invoke((Action)delegate { DoSomething(arg1); });
        return;
    }

    // Rest of method will only execute on the correct thread
    // ...
}

4

Nouveau C # Guid

Génère une nouvelle instance System.Guid initialisée à une nouvelle valeur guid générée

Raccourci: csguid Disponible dans: dans les fichiers C # 2.0+

new System.Guid("$GUID$")

Propriétés des macros :

  • GUID - Nouveau GUID - Faux

Les versions récentes de ReSharper incluent désormais le raccourci nguid par défaut.
Jamie Keeling

True, mais cela génère uniquement une valeur guid, pas d'initialisation du type en C #.
codekaizen

4

Méthode de test MSTest

C'est un peu boiteux mais c'est utile. Espérons que quelqu'un en tirera une certaine utilité.

Raccourci: testMethod

Disponible en: C # 2.0

[TestMethod]
public void $TestName$()
{
    throw new NotImplementedException();

    //Arrange.

    //Act.

    //Assert.
}

$END$

4

Méthode de configuration NUnit

Raccourci: configuration
Disponible dans: Disponible dans: Fichiers C # 2.0+ où la déclaration de membre de type est autorisée

[NUnit.Framework.SetUp]
public void SetUp()
{
    $END$
}

Bon point. Je peux penser à certains cas où vous voudrez peut-être sous-classer des montages de test (peut-être si vous vouliez écrire des tests "contractuels" où un ensemble d'assertions devrait s'appliquer à un certain nombre d'objets), mais je pense que dans le cas beaucoup plus courant, virtuel est superflu. Je vais le modifier.
paraquat

Une amélioration de ceci ............ private $ classUnderTestType $ _classUnderTest; [NUnit.Framework.SetUp] public void SetUp () {_classUnderTest = new $ classUnderTestType $ ($ END $); }
bytedev

4

Méthode NUnit Teardown

Raccourci: teardown
Disponible dans: Disponible dans: Fichiers C # 2.0+ où la déclaration de membre de type est autorisée

[NUnit.Framework.TearDown]
public void TearDown()
{
    $END$
}

3

Créez une vérification de l'intégrité pour vous assurer qu'un argument n'est jamais nul

Raccourci: eann
Disponible dans: fichiers C # 2.0+ où l'instruction de type est autorisée

Enforce.ArgumentNotNull($inner$, "$inner$");

Macros:

  • interne - Suggérer un paramètre - # 1

Remarques: Bien que cet extrait de code cible la bibliothèque .NET Lokad.Shared open source , il pourrait être facilement adapté à tout autre type de vérification d'argument.


3

Nouvelle classe COM

Raccourci : comclass

Disponible dans : fichiers C # 2.0+ où la déclaration de membre de type ou la déclaration d'espace de noms est autorisée

[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("$GUID$")]
public class $NAME$ : $INTERFACE$
{
    $END$
}

Macros

  • GUID - Nouveau GUID
  • NAME - Modifiable
  • INTERFACE - Modifiable

2
Beau modèle, mais cela pourrait être mieux adapté à un modèle de fichier qu'à un modèle en direct.
Drew Noakes

3

Assert Invoke non requis

Utile lors du développement d'applications WinForms dans lesquelles vous voulez être sûr que le code s'exécute sur le thread approprié pour un élément donné. Notez que Controlimplements ISynchronizeInvoke.

Raccourci : ani

Disponible dans : L'instruction de fichiers C # 2.0+ est autorisée

Debug.Assert(!$SYNC_INVOKE$.InvokeRequired, "InvokeRequired");

Macros

  • SYNC_INVOKE - Suggère une variable deSystem.ComponentModel.ISynchronizeInvoke

2

Trace - Writeline, avec format

Modèle très simple pour ajouter une trace avec une chaîne formatée (comme Debug.WriteLine prend déjà en charge).

Raccourci: twlf
Disponible dans: fichiers C # 2.0+ où l'instruction est autorisée

Trace.WriteLine(string.Format("$MASK$",$ARGUMENT$));

Propriétés des macros:

  • Argument - value- EditableOccurence
  • Masque - "{0}"- ModifiableOccurence

1

Nouvel isolateur Typemock faux

Raccourci : faux
Disponible dans : [dans les fichiers c # 2.0 où l'instruction est autorisée]

$ TYPE $ $ Nom $ Fake = Isolate.Fake.Instance ();
Isolate.WhenCalled (() => $ Nom $ Fake.)

Propriétés des macros:
* $ TYPE $ - Suggérer le type d'une nouvelle variable
* $ Nom $ - Valeur de une autre variable ( Type ) avec le premier caractère en minuscule


1

Depuis que je travaille avec Unity en ce moment, j'en ai proposé quelques-uns pour me simplifier la vie un peu:


Tapez Alias

Raccourci : ta
Disponible en : * .xml; * .config

<typeAlias alias="$ALIAS$" type="$TYPE$,$ASSEMBLY$"/>

Déclaration de type

C'est un type sans nom et sans arguments

Raccourci : tp
Disponible en : * .xml; * .config

<type type="$TYPE$" mapTo="$MAPTYPE$"/>

Déclaration de type (avec nom)

C'est un type avec un nom et aucun argument

Raccourci : tn
Disponible en : * .xml; * .config

<type type="$TYPE$" mapTo="$MAPTYPE$" name="$NAME$"/>

Déclaration de type avec constructeur

C'est un type avec un nom et aucun argument

Raccourci : tpc
Disponible en : * .xml; * .config

<type type="$TYPE$" mapTo="$MAPTYPE$">
  <typeConfig>
    <constructor>
        $PARAMS$
    </constructor>
  </typeConfig>
</type>

etc....


1

Bloc de configuration XML log4net

Vous pouvez importer le modèle directement:

<TemplatesExport family="Live Templates">
  <Template uid="49c599bb-a1ec-4def-a2ad-01de05799843" shortcut="log4" description="inserts log4net XML configuration block" text="  &lt;configSections&gt;&#xD;&#xA;    &lt;section name=&quot;log4net&quot; type=&quot;log4net.Config.Log4NetConfigurationSectionHandler,log4net&quot; /&gt;&#xD;&#xA;  &lt;/configSections&gt;&#xD;&#xA;&#xD;&#xA;  &lt;log4net debug=&quot;false&quot;&gt;&#xD;&#xA;    &lt;appender name=&quot;LogFileAppender&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;&#xD;&#xA;      &lt;param name=&quot;File&quot; value=&quot;logs\\$LogFileName$.log&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;AppendToFile&quot; value=&quot;false&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;RollingStyle&quot; value=&quot;Size&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;MaxSizeRollBackups&quot; value=&quot;5&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;MaximumFileSize&quot; value=&quot;5000KB&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;StaticLogFileName&quot; value=&quot;true&quot; /&gt;&#xD;&#xA;&#xD;&#xA;      &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;&#xD;&#xA;        &lt;param name=&quot;ConversionPattern&quot; value=&quot;%date [%3thread] %-5level %-40logger{3} - %message%newline&quot; /&gt;&#xD;&#xA;      &lt;/layout&gt;&#xD;&#xA;    &lt;/appender&gt;&#xD;&#xA;&#xD;&#xA;    &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot;&gt;&#xD;&#xA;      &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;&#xD;&#xA;        &lt;param name=&quot;ConversionPattern&quot; value=&quot;%message%newline&quot; /&gt;&#xD;&#xA;      &lt;/layout&gt;&#xD;&#xA;    &lt;/appender&gt;&#xD;&#xA;&#xD;&#xA;    &lt;root&gt;&#xD;&#xA;      &lt;priority value=&quot;DEBUG&quot; /&gt;&#xD;&#xA;      &lt;appender-ref ref=&quot;LogFileAppender&quot; /&gt;&#xD;&#xA;    &lt;/root&gt;&#xD;&#xA;  &lt;/log4net&gt;&#xD;&#xA;" reformat="False" shortenQualifiedReferences="False">
    <Context>
      <FileNameContext mask="*.config" />
    </Context>
    <Categories />
    <Variables>
      <Variable name="LogFileName" expression="getOutputName()" initialRange="0" />
    </Variables>
    <CustomProperties />
  </Template>
</TemplatesExport>

1

Rendre la méthode virtuelle

Ajoute un mot-clé virtuel. Particulièrement utile lors de l'utilisation de NHibernate, EF ou d'un framework similaire où les méthodes et / ou propriétés doivent être virtuelles pour permettre le chargement différé ou le proxy.

Raccourci: v

Disponible dans: fichier C # 2.0+ où la déclaration de membre de type est autorisée

virtual $END$

L'astuce ici est l'espace après virtuel, qui peut être difficile à voir ci-dessus. Le modèle actuel est "virtual $ END $" avec le code de reformatage activé. Cela vous permet d'aller au point d'insertion ci-dessous (noté |) et de taper v:

public |string Name { get; set; }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.