Jawa / Говнокод #10168 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
public class ... {

public Double toDoubleValue(String s){
	Double value;
	if (s!=""){
		value = Double.valueOf(s);
		return value;
	}
	else {
		value = 0.00;
		return value;
	}
        ....
        toDoubleValue(row.getColumnValue(col.getId()).toString());
}

1. На null не проверяется
2. Можно было тоже самое написать короче, не объявляя дополнительный метод, с помощью ?:

Запостил: -EZ- -EZ-, (Updated )

Комментарии (21) RSS

  • Если метод часто используется - то он всяко лучше, чем тернарный оператор.
    Ответить
      • 1) Меньше копипаста в духе row.getColumnValue(col.getId()).toString () != "" ? Double.valueOf(row.getColumnValue(col.ge tId()).toString()) : 0.0.
        2) Легче исправлять баги - к примеру проверку на null, если она действительно понадобится, нужно будет добавлять только в одно место а не в каждый тернарный оператор.

        P.S. естественно если метод вызывался 1 раз - то тернарка лучше
        Ответить
  • Вообще, конечно надо было так:
    return s!="" ? Double.valueOf(s) : 0.0;
    Всё предельно ясно и без лишних переменных
    P.S. А row.getColumnValue() что возвращает?
    Ответить
    • Да, кто ж его знает, что там в БД (код не мой). Поэтому и нужны проверки.
      Ответить
  • s != ""

    меня одного такая проверка смущает?
    Ответить
      • а почему в теории? я не особо знаком с драйверами бд, но где гарантия, что для пустых строк возвращается именно литерал "", а не новый instance строки, вроде new String(bytearray)?

        s.intern() != "" точно будет работать всегда, но очень быстро придет ООМ, при частых выборках разных данных
        Ответить
        • s.intern() ... пул интернированных строк вроде же не чистится никогда?
          Ответить
          • поэтому я и написал, что ООМ очень быстро придет при частых выборках. вообще строки не стоит сравнивать на != если нет 100% уверенности, что они интерированы
            Ответить
        • Ну, на jdbc это всё-же не похоже, скорее, на какую-то обёртку над ним. А там может быть всё, что угодно.
          Ответить
  • А что equals уже отменили? Просто выходные были и я много спал...
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8