Плохая идея в том, что она может стать нестатической сверхурочно (во время разработки).
Почему вы спрашиваете?Просто потому, что в какой-то момент вы захотите нестатическую зависимость в этой статической.Будь то логгер, база данных, вспомогательный класс, сервис, соединение, все, что имеет разное время жизни.
С другой стороны, с нестатическим статусом вы можете легко сделать его статическим, гарантируя, что вы создадите его один раз или используйте внедрение зависимостей, чтобы легко управлять синглетами и другими возможнымивремя жизни (да, существует многократное время жизни, например на соединение, на сессию, на поток и т. д.).
Для решения:
public class MyClass
{
public long TotalOutstandingRequests;
private readonly ILogger _logger;
//some incrementing, decrementing code here
public MyClass(ILogger logger)
{
_logger = logger;
}
public void AddRequest()
{
Interlocked.Increment(ref TotalOutstandingRequests);
_logger.Debug("New request here!");
}
}
Так когда же использовать статический?Просто:
- , когда вы уверены, что у него нет зависимостей, он не будет иметься в будущем и будет превращен в камень (языковые расширения, такие как LINQ, Regex, любые вспомогательные методы, константы и т. Д.)
- вы работаете с неуправляемым кодом (вызывая функции Windows и т. Д.).
Я никогда не встречал код, который не может жить без статического, кроме этих двух случаев.
PS
Если это домашний проект - вы можете забыть о том, что я сказал, и просто сделать это так, как вы хотите =)