Идиоматический способ сигнализации нереализованных методов в С#

Я создаю скелет для приложения С# и намереваюсь оставить кучу методов без реализации - возвращать фиктивные значения. Я намереваюсь вернуться к ним, но не хочу, чтобы случайно забыть реализовать любой из них.

Я хочу сигнализировать, когда я дойду до метода, который не реализован, и продолжить выполнение с фиктивным значением.

Какой идиоматический способ сделать это?

Ответы

Ответ 1

Классический способ сделать это:

throw new NotImplementedException();

который ясен для вызывающего и который легко найти позже, чтобы исправить (фактически он автоматически появляется в некоторых списках задач). Однако, если это не вариант, возможно:

return 0; // TODO

снова, это будет автоматически отображаться в списках задач и легко найти.

Если вам нужно что-то более очевидное:

[Obsolete("not implemented")]
public int Foo() {
    return 0;
}

который появится как предупреждение компилятора у вызывающего или:

public int Foo() {
    #warning Foo not implemented
    return 0;
}

который появится в качестве предупреждения компилятора в методе.

Ответ 2

Традиционно вы бросаете NotImplementedException для заглушки, но это, конечно, прекратит выполнение этого пути. Другие варианты:

Просто зарегистрируйте его. Вставьте строку в свой журнал или консольный вывод.

Или, в зависимости от того, сколько всплывающих окон вас раздражает, вы можете использовать Debug.Assert/Debug.Fail, чтобы вывести сообщение, когда эти методы удалены.

Ответ 3

Существует также возможность использования TODO, это будет отображаться в списке задач в Visual Studio.

//TODO: Finish this method
public int dummy()
{
return 0;
}

Повторите

throw new NotImplementedException()

Ответ 4

Возможно, путем исключения NotImplementedException в каждом методе без реализации?

Чтобы вернуть значение, возможно, вы можете использовать фальшивую фреймворк

Ответ 5

Поскольку вы хотите продолжить выполнение, я бы использовал TODO: и возвратил значение по умолчанию, если метод имеет тип возврата.

Значение по умолчанию - ОК, если это значение, которое приведет к сбою ваших модульных тестов, но TODO вполне заметны в списке задач, особенно если вы используете Resharper.