Декларация переменных и проверка ошибок: что входит в первую очередь?

При написании функции у меня всегда возникает такая путаница, нужно ли сначала проверять ошибки и объявлять переменные позже (или) назначать параметры локальным переменным, а затем проверять наличие ошибок. Какой из следующих способов является предпочтительным и почему? Я обычно придерживаюсь первого типа.

void DoSomething1(Object x, Object y){

  // All sort of error checking goes here
  if IsError(x) return;
  if IsError(y) return;

  // Variable declaration
  int i,j;
  Object z = x;
}


void DoSomething2(Object x, Object y){

  // Variable declaration
  int i,j;
  Object z = x;

  // All sort of error checking goes here
  if IsError(z) return;
  if IsError(y) return;

}

Ответ 1

Вам следует следовать правилу близости и объявлять переменные как можно позже. Это локализует их создание и использование. Вы должны также проверить параметры на достоверность при первой возможности, чтобы минимизировать выполненную работу.

Поэтому я согласен, что ваш первый лучше, но он субъективен. Там, возможно, аргументы для другого подхода, но я еще не слышал убедительных, поэтому я рассматриваю эти два руководства как наилучшую практику.

Поскольку вы заявляете "агностик языка", несмотря на то, что ваш код выглядит как-то странно знакомым:-), почти наверняка есть некоторые языки, на которых вы не получаете выбора, а переменные должны быть объявлены вверху.

Ответ 2

Объявлять переменные, когда они вам нужны, обычно, когда какой-либо промежуточный результат готов или когда вы собираетесь ввести цикл.

Таким образом, это подразумевает, что проверки ошибок часто появляются перед объявлениями.