Какой ReSharper 4 + живут шаблоны для C#, Вы используете? [закрытый]

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

94
задан 8 revs, 3 users 65% 23 May 2017 в 12:10
поделиться

21 ответ

Создайте проверку работоспособности, чтобы гарантировать, что аргумент никогда не не пустой

Ярлык: eann
, Доступный в: C# 2.0 + файлы, где оператор типа позволяется

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

Макросы:

  • внутренний - Предлагают параметр - Комментарии № 1

: , Хотя этот отрывок предназначается для.NET с открытым исходным кодом Lokad. Совместно использованный библиотека, это могло быть легко адаптировано к любому другому типу проверки аргумента.

3
ответ дан Rinat Abdullin 24 November 2019 в 06:03
поделиться

Новый Ярлык COM-класса

: comclass

, Доступный в : C# 2.0 + файлы, где объявление элемента типа или объявление пространства имен позволяются

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

Макросы

  • GUID - Новое ИМЯ GUID
  • - Доступные для редактирования
  • ИНТЕРФЕЙС - Доступный для редактирования
3
ответ дан Ian G 24 November 2019 в 06:03
поделиться

Утверждайте Вызывают Not Required

Useful при разработке приложений WinForms, где Вы хотите быть уверенными, что код выполняется на корректном потоке для данного объекта. Отметьте это Control реализации ISynchronizeInvoke.

Ярлык : кукушка ани

Доступный в [1 111]: C# 2.0 + оператор файлов позволяется

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

Макросы

  • , SYNC_INVOKE - Предлагает переменную System.ComponentModel.ISynchronizeInvoke
3
ответ дан Drew Noakes 24 November 2019 в 06:03
поделиться

Трассировка - Writeline, с форматом

Очень простой шаблон для добавления трассировки с отформатированной строкой (как Отладка. WriteLine уже поддерживает).

Ярлык: twlf
, Доступный в: C# 2.0 + файлы, где оператор позволяется

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

свойства Macros:

  • Аргумент - value - маска EditableOccurence
  • - "{0}" - EditableOccurence
2
ответ дан Ray Hayes 24 November 2019 в 06:03
поделиться

Метод тестирования MSTest

Это - немного Ламе, но это полезно. Надо надеяться, кто-то вытащит некоторую утилиту из него.

Ярлык: testMethod

, Доступный в: C# 2.0

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

    //Arrange.

    //Act.

    //Assert.
}

$END$
4
ответ дан 3 revs, 3 users 78% 24 November 2019 в 06:03
поделиться

Создайте новое приспособление модульного теста для некоторого Ярлыка типа

: ntf
, Доступный в: C# 2.0 + файлы, где объявление элемента типа или объявление пространства имен позволяются

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

Макросы:

  • TypeToTest - ни один - Тест № 2
  • - ни один - V
14
ответ дан 3 revs 24 November 2019 в 06:03
поделиться

Создайте новый автономный случай модульного теста

Ярлык: ntc
, Доступный в: C# 2.0 + файлы, где объявление элемента типа позволяется

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

Макросы:

  • Тест - ни один - V
11
ответ дан 2 revs 24 November 2019 в 06:03
поделиться

Вызовите при необходимости

Полезный при разработке приложений WinForms, где метод должен быть вызываемым от потоков неUI, и тот метод должен тогда Маршалл вызов на поток UI.

Ярлык : inv

, Доступный в [1 110]: C# 3.0 + оператор файлов позволяется

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

Макросы

  • METHOD_NAME - Содержащий имя элемента типа
<час>

, Вы обычно использовали бы этот шаблон в качестве первого оператора в данном методе, и результат напоминает:

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

    // Rest of method will only execute on the correct thread
    // ...
}
4
ответ дан Drew Noakes 24 November 2019 в 06:03
поделиться

Утверждают. Шаблон AreEqual

Simple для добавления утверждает к модульному тесту

Ярлык : один
Доступный в [1 110]: в C# 2.0 + файлы, где оператор позволяется

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

Быстрая версия:

Assert.That($expected$, Is.EqualTo($actual$));$END$
7
ответ дан 2 revs, 2 users 82% 24 November 2019 в 06:03
поделиться

Быстрый Ярлык ExpectedException

Просто быстрый ярлык для добавления к моим атрибутам модульного теста.

Ярлык : ee

, Доступный в : Доступный в: C# 2.0 + файлы, где объявление элемента типа позволяется

[ExpectedException(typeof($TYPE$))]
5
ответ дан 2 revs, 2 users 94% 24 November 2019 в 06:03
поделиться

Создайте тупик тестового сценария для NUnit

, Этот мог служить напоминанием (функциональности, чтобы реализовать или протестировать), который обнаруживается в бегуне модульного теста (как любой другой проигнорированный тест),

Ярлык: nts
, Доступный в: C# 2.0 + файлы, где объявление элемента типа позволяется

[Test, Ignore]
public void $TestName$()
{
    throw new NotImplementedException();
}
$END$
4
ответ дан Rinat Abdullin 24 November 2019 в 06:03
поделиться

Реализация 'Располагает (bool)' Метод

Реализация , Joe Duffy Располагает Шаблон

Ярлык: располагают

Доступный в: C# 2.0 + файлы, где объявление элемента типа позволяется

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;

свойства Macros :

  • УЧАСТНИК - Предлагают переменную Системы. IDisposable - Доступный для редактирования КЛАСС Происшествия № 1
  • - Содержащий имя типа
22
ответ дан 4 revs, 3 users 49% 24 November 2019 в 06:03
поделиться

Объявить средство ведения журнала log4net для текущего типа.

Ярлык: log

Доступно в: файлах C # 2.0+, где разрешено объявление члена типа

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

Свойства макроса :

  • TYPE - Содержит имя типа
10
ответ дан 24 November 2019 в 06:03
поделиться

NUnit Teardown method

Shortcut: teardown
Available in: Available in: C# 2.0+ files where type member declaration is allowed

[NUnit.Framework.TearDown]
public void TearDown()
{
    $END$
}
4
ответ дан 24 November 2019 в 06:03
поделиться

New Typemock изолятор fake

Ярлык : fake
Доступен в : [в файлах c # 2.0, где разрешен оператор]

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

Свойства макроса:
* $ TYPE $ - Предложить тип новой переменной
* $ Name $ - значение другой переменной ( Тип ) с первым символом в нижнем регистре

1
ответ дан 24 November 2019 в 06:03
поделиться

NUnit Setup method

Shortcut: setup
Available in: Available in: C# 2.0+ files where type member declaration is allowed

[NUnit.Framework.SetUp]
public void SetUp()
{
    $END$
}
4
ответ дан 24 November 2019 в 06:03
поделиться

Проверить, имеет ли переменная значение null

Сокращение: ifn
Доступно: Файлы C # 2.0+

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

Проверить, не является ли переменная равной нулю

Ярлык : ifnn
Доступно в: файлах C # 2.0+

if (null != $var$)
{
    $END$
}
8
ответ дан 24 November 2019 в 06:03
поделиться

Поскольку я сейчас работаю с Unity, я придумал несколько, чтобы немного облегчить себе жизнь:


Введите псевдоним

Ярлык : ta
Доступно в ]: * .xml; * .config

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

Объявление типа

Это тип без имени и без аргументов

Ярлык : tp
Доступен в : * .xml; * .config

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

Объявление типа (с именем)

Это тип с именем и без аргументов

Ярлык : tn
Доступно в : * .xml; * .config

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

Объявление типа с конструктором

Это тип с именем и без аргументов

Ярлык : tpc
Доступен в : * .xml; * .config

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

и т.д ....

1
ответ дан 24 November 2019 в 06:03
поделиться

MS Test Unit Test

Новый тест MS Test Unit, использующий синтаксис AAA и соглашение об именах, найденное в Art Of Unit Testing

Ярлык: testing (или tst, или что угодно)
Доступно в: файлах C# 2.0+, где разрешено объявление члена типа

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

    // Act


    // Assert

}

Свойства макросов (если есть):

  • MethodName — имя тестируемого метода
  • StateUnderTest — состояние, которое вы пытаетесь протестировать
  • ExpectedBehavior — ожидаемое развитие событий
9
ответ дан 24 November 2019 в 06:03
поделиться

Rhino имитирует синтаксис воспроизведения записи

Ярлык : RhinoMocksRecordPlaybackSyntax *

Доступен в: файлах C # 2.0+

Примечание: Этот фрагмент кода зависит от MockRepository ( var mocks = new new MockRepository (); ) уже объявлен и инициализирован где-то еще.

using (mocks.Record())
{
    $END$
}

using (mocks.Playback())
{

}

* может показаться слишком длинным для имени ярлыка, но с intellisense не проблема при вводе. также есть другие фрагменты кода для Rhino Mocks, поэтому полное определение имени упрощает их визуальную группировку

0
ответ дан 24 November 2019 в 06:03
поделиться

Rhino имитирует методы ожидания

Ярлык : RhinoMocksExpectMethod

Доступен в: файлах C # 2.0+

Expect.Call($EXPECT_CODE$).Return($RETURN_VALUE$);

Ярлык : RhinoMocksExpectVoidMethod

Доступно в: файлах C # 2.0+

Expect.Call(delegate { $EXPECT_CODE$; });
0
ответ дан 24 November 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: