hubert
41 уровень

Говнокод #2

Статья из группы Архив info.javarush
public boolean foo(...){ ... try{ ... } finally{ if(expr_1){ return false; } if(expr_2){ return false; } ... if(expr_n){ return false; } } ... return true; }
Комментарии (9)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Cawich Уровень 18
24 декабря 2015
эм… а я правильно понимаю, что этот код всегда (ВСЕГДА) будет выдавать false? соответственно, говнокод тут сводится скорее к вопросу надобности данного метода…
L2CCCP Уровень 9
19 апреля 2014
<code>public boolean foo(...)
	{
		//do something...
		try
		{
			//do something...
		}
		finally
		{
			//Если при условиях необходимо выдать дополнительный результат
			if(expr_1)
			{
				object.sendResult("Result 1");
				return false;
			}
			else if(expr_2)
			{
				object.sendResult("Result 2");
				return false;
			}

			//Если результат единый для всех
			if(expr_1 || expr_2)
				return false;
			
			//do something...

			if(expr_n)
				return false;
		}
		//do something...
		return true;
	}</code>
Небольшой совет начинающим, если Ваш метод выполняет возвраты по разным условиям то лучше использовать перечисление через 'else if' так как оно выполняется быстрее вместо простыни 'if'.
Anton_n Уровень 33
19 апреля 2014
Очень хочется так написать:

  finally{
      return !(expr_1||expr_2||...||expr_n);
  }

Но тогда код будет по-другому работать. А чтобы работал точно также как исходный, то, мне кажется, можно сделать только как люди выше предложили.
phashik Уровень 28
18 апреля 2014
нет, плохо получилось :(
terranum Уровень 28
18 апреля 2014
public boolean foo(...){
    ...
    try{
    ...
    }
    finally{
        if(expr_1||expr_2||...||expr_n)
        return false;
    }
    ...
    return true;
}
SergeyKandalintsev Уровень 32
18 апреля 2014



public boolean foo(...){
  ...
  try{
  ...
  }
  finally{
    if(expr_1 || expr_2 || ... || expr_n){
      return false;
    }
  }
  ...
  return true;
}