К вашему примеру кода, почему у вас есть метод RemoveAt(T obj)
?
Вместо этого вы можете сделать RemoveAt(int index)
и Remove(T obj)
. Взгляните на API-интерфейсы Microsoft (например, для Списка ), которые показывают, как они настраивают методы Remove для универсальной коллекции.
А теперь ваши очки:
1: Что бы сделал Add(int number)
? Если я правильно понимаю ваши намерения, Add(10)
можно интерпретировать только как «Добавьте значение 10 в конце моей коллекции». Если вы хотите добавить значение по определенному индексу, вы можете (и, вероятно, должны) назвать этот метод Insert: Insert(int index, T value)
.
2: конечно, Visual Studio сначала будет интерпретировать метод как void, но вы можете отредактировать его как
public class MyStack<T>
{
public T Pop()
{
}
}
Заглушки, созданные нажатием Ctrl+.
, удобны, а не Евангелие. Вы НЕ ДОЛЖНЫ всегда присваивать возвращаемое значение переменной. Если вам не нужно это в тесте, не делайте этого. Если вы хотите, чтобы VS обнаружил тип возврата, отличный от void, вы можете написать другой модульный тест (например, что Pop () возвращает последнее переданное значение).
3: я бы протестировал типы, которые я вижу наиболее часто используемые в моем коде. Если вы пишете общедоступный API, протестируйте как можно больше типов. Если вы используете NUnit, обратите внимание на использование атрибута [TestCase]
, чтобы избежать написания повторяющегося кода.
4: Я все еще использую TestDriven, но я не пробовал обходиться без него, поэтому я не могу сделать полезное сравнение.
5: Просто удалите сеттер, если он вам не нужен. Некоторые дополнительные структуры, такие как ReSharper , поддерживают более сложную генерацию кода, включая свойства только для чтения.