Несколько дней назад я опубликовал похожий вопрос, но он был более ориентирован на любой файл * .Designer.cs. Этот вопрос направлен на объявление и инициализацию глобальных переменных в классе. Насколько мне известно, это почти обычная практика (кроме файлов * .Designer.cs, которые кажутся) помещать все глобальные переменные в начале определения класса, за которым следует остальная часть кода в любом порядке (я предпочитаю Getters and Setters затем Конструкторы, затем События, затем функции разного). Ну, я видел, как это было сделано, и сделал это сам, где глобальная переменная установлена в объявлении.
И я не имею в виду:
ClassA clA = new ClassA();
Я имею в виду:
private int nViewMode = (int)Constants.ViewMode.Default;
Теперь я слышал, как люди говорят, и я могу согласиться с этим на некоторых уровнях, что инициализация таких переменных, тех переменных, которые не требуют оператора new
при объявлении переменной, должна быть сделана в конструкторы или функции инициализации. Однако, когда они заявили об этом, они могли иметь в виду, что предыдущие заявления были в порядке, но не следующие:
Неправильный путь
private int nTotal = 100;
private int nCount = 10;
private int nDifference = nTotal - nCount;
Возможный правильный путь
private int nTotal = 100;
private int nCount = 10;
private int nDifference = 0;
void ClassConstructor()
{
nDifference = nTotal - nCount;
}
Мои вопросы:
Что является наиболее распространенной / стандартной практикой в такой ситуации?
Какие плюсы и минусы того или другого?
Эти вопросы актуальны только для некоторых языков, а не для других?
Мой последний вопрос, о котором я подумал, когда набирал это, и вот причина. В Visual Studio 2008 кажется, что я могу ставить точки останова в объявлениях глобальных переменных, в то время как я не думаю, что мог бы, когда я писал C ++ в колледже. Кроме того, я считаю, что в колледже нельзя использовать переменную, которая была объявлена непосредственно перед текущей переменной, но опять же, это было в C ++. Поэтому я не уверен, что эти вопросы действительны только для продуктов MSVS (мы использовали Borland в колледже), новых компиляторов или нет. Если у кого-то есть понимание, оно ценится. Спасибо.