- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
public final static String sqlCottOpen = new StringBuilder()
.append("select\n")
.append("rtt.object_id as rtt_id,\n")
.append("rtt.name as rtt_name,\n")
.append("stt.object_id as stt_id,\n")
.append("stt.name as stt_name,\n")
.append("(SELECT status_value.value\n")
// Ещё 40 строчек апендов
.append(" and rownum = 1) stt").toString();
SmackMyBitchUp 08.07.2011 16:31 # 0
Lure Of Chaos 08.07.2011 16:54 # +2
Lure Of Chaos 08.07.2011 16:32 # +3
1. какого хуя™ клеить стрингбилдером вручную, + вполне так же перегружен
2. какого хуя™ не в одной строчке
3. какого хуя™ в константе хранить запрос
4. какого хуя™ вообще запрос в явном виде (да еще и с мускульным акцентом)
tir 08.07.2011 22:47 # +1
stokito 09.07.2011 00:41 # 0
1. Тут создаётся стрингбилдер, 50 раз дёргается его метод append, а потом он преобразовывается в строку. Это совершенно лишние операции поскольку можно сразу задать строковый литерал.
2. Многострочные константы это потенциальный источник гемора, особенно если пропустить пробел или символ переноса строки.
3. Запросы не желательно хранить в константах, они не рассчитаны для этого. Лучше их загружать из шаблона или оформить его в хранимую процедуру. Иногда бывает нужно что-то дописывать в запрос, тогда хранимая процедура не поможет.
4. См. пункт 3. Хотя возможно комментатор имел в виду наличие SQL'ного форматирования внутри (отступы, переносы строк).
Lure Of Chaos 09.07.2011 15:21 # 0
2. лишние операции, можно было в строку
3. совершенно нецелесообразно хранить запрос sql в константе
4. существует jdbc и querybuilder/orm фреймворки для более удобного и красивого обращения с базой
tir 10.07.2011 13:24 # 0
2. Не согласен. Ниже приведем пример того как бы это выглядело в строчку. Считаю, что в данном случае, многострочно выглядит выгоднее.
3. Почему нецелесообразно? Как можно сделать лучше? Тот же самый jpa со своими @NamedQuery по сути и есть хранение запроса в константе.
4. А если в проекте всего 3-4 таблицы и используется не больше 10 запросов и заведомо известно, что дальнейшего роста проекта не будет? Про целесообразность библиотек мы уже поговорили в #7177.
П. С. Неплохо бы указывать размер проекта, когда постится код.
П. С. С. Учитывая название константы, это все же скорее всего говнокод.
lucidfox 14.07.2011 11:46 # 0
А вот если часть строки генерируется динамически, тогда да, "string" + func() эквивалентно new StringBuilder().append("string").append( func()).toString(). Хотя опять же компилятор оптимизирует байт-код по сравнению с явным вызовом StringBuilder.
Явно вызывать StringBuilder имеет смысл лишь в циклах, когда промежуточные результаты присваиваются временной переменной.
Lure Of Chaos 15.07.2011 13:09 # 0
guest 09.07.2011 15:59 # −1
3.14159265 09.07.2011 10:30 # 0
откуда эта фраза? чем знаменита?
absolut 09.07.2011 10:55 # +1
guest 09.07.2011 13:03 # −1
Lure Of Chaos 09.07.2011 16:37 # 0
guest 09.07.2011 16:57 # −1
guest 09.07.2011 16:58 # 0
carsten 10.07.2011 15:19 # 0
guest 18.07.2011 19:14 # −1
prevratnic 18.07.2011 18:20 # −1
ХА-ХА-ХА-ХА
guest8 09.04.2019 11:09 # −999