При назначении по умолчанию значения по умолчанию для поля (здесь false для bool), FxCop говорит:
Resolution : "'Bar.Bar()' initializes field 'Bar.foo'
of type 'bool' to false. Remove this initialization
because it will be done automatically by the runtime."
Теперь я знаю, что код как int a = 0
или bool ok = false
вводит некоторую избыточность, но для меня это выглядит очень, очень хорошая практика кода, которую мои учителя на самом деле настаивали на моем мнении.
Мало того, что штраф за производительность очень мал, что более важно: полагаясь на умолчание, он полагается на знание каждого программиста, когда-либо использующего кусок кода, для каждого типа данных, который поставляется с дефолтом. (DateTime?)
Серьезно, я думаю, это очень странно: сама программа, которая должна защитить вас от принятия слишком очевидных ошибок, предлагает здесь сделать один, только для некоторой повышенной производительности? (здесь мы говорим об инициализационном коде, только один раз выполнив это! Программисты, которые так много заботятся, могут, конечно, опустить инициализацию (и, вероятно, должны использовать C или ассемблер:-)).Является ли FxCop очевидной ошибкой здесь или есть еще что-то?
Два обновления:
Это не просто мое мнение, но то, чему меня учили в университете (Бельгия). Не то, чтобы я хотел использовать argumentum ad verecundiam, но просто чтобы показать, что это не только мой мнение. И относительно этого:
Мои извинения, я просто нашел это:
Должен ли я всегда/никогда/никогда не инициализировать поля объектов значениями по умолчанию?