Всегда ли нормально не инициализировать значение, если вы только установили его значение по умолчанию?

Resharper просто запросил меня в этой строке кода:

private static bool shouldWriteToDatabase = false;

указывающий, что я не должен говорить "= false", потому что bools, по-видимому, по умолчанию false в С#. Я программировал на С# более полутора лет и никогда не знал об этом. Я думаю, это просто проскользнуло сквозь трещины, но это оставляет мне интересно, какая хорошая практика.

Я работаю над тем, что значения по умолчанию понимаются всеми? Это приведет к созданию более чистого кода, но вызывает неоднозначность, если другой программист не знает значения по умолчанию.

Ответ 1

Лично я думаю:

  • Хорошо быть явным, если ваш код зависит от значения intial.
  • Если ваш код не полагается на начальное значение, его отсутствие будет иметь больше смысла и загромождать код меньше.

Однако я не думаю, что Resharper может легко обнаружить разницу между этими двумя ситуациями.

Ответ 2

Я единственный, кто думает, что = false; просто не загромождает код? Как разработчик, который поддерживает приложения, в основном написанные другими, явное понимание того, что вы имеете в виду, может быть очень полезным. Да, bools по умолчанию false в С#, но когда вы смотрите на код другого пользователя, это может сбивать с толку, если это было предполагаемое поведение или если они были просто неаккуратными.

Ответ 3

Лично значения по умолчанию документируются так же хорошо, как и все остальное на языке (С# или любой другой язык). Это достаточно прямо, что его следует принимать, т.е. Int начинается с 0. Сценарий, который выделяется для меня, - это если вы хотите, чтобы массив int содержал 0. Вы собираетесь определить это или просто позволить С# инициализировать его с помощью 0s?

Кажется, немного интуитивно понятно, что большие массивы int равны 0, но нужно указать, что один bool является ложным. Указание основной переменной, но не более сложной структуры. Поэтому я не инициализирую его значение по умолчанию для согласованности.