Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прокомментируйте код... по стилю, по грамотности реализации 
:(
    Опции темы
Dzo
Дата 9.7.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 22.4.2008

Репутация: 1
Всего: 1



Удалено : )

Это сообщение отредактировал(а) Dzo - 14.7.2008, 16:02
PM MAIL   Вверх
AntonSaburov
Дата 9.7.2008, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



По первому куску 

1. Вместо переменной connectionWasClosed наверно лучше помещать закрытие коннекта в блок finally.

2. Навание getByResultingArrayList - неудачное. Это больше напоминает название функции.
PM MAIL WWW ICQ   Вверх
Dzo
Дата 9.7.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 22.4.2008

Репутация: 1
Всего: 1



Цитата(AntonSaburov @  9.7.2008,  17:20 Найти цитируемый пост)
2. Навание getByResultingArrayList - неудачное. Это больше напоминает название функции. 


Хмм, изменил на resultingArrayList.


Это сообщение отредактировал(а) Dzo - 9.7.2008, 17:24
PM MAIL   Вверх
SoulKeeper
Дата 9.7.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



Код

 int i = 0; // looper
        ArrayList<String> getByResultingArrayList = new ArrayList<String>();
        boolean connectionWasClosed = false;
        
        for (i=0;i<valuesConsistingArrayList.size();i++) {


1). зачем i отдельно?

2). for (int i = 0, n = valuesConsistingArrayList.size(); i < n; i++) { будет работать быстрее, т.к. метод size() вызовется 1 раз

3). Вы на каждый цикл открываете по коннекту и делаете по запросу в базу. Есть такие чудесные вещи как WHERE getByColumnName IN (1, 2, 3, ...). Выполнится в одном запросе

4). геттеры и сеттеры getSomething, setSomething - считаются хорошим стилем для названий методов для переменной something. В результате у вас по конвеншинах получится getGetByColumnName() и setGetByColumnName(). Переменные getSomething/setSomthing/isSomething называть не стоит.

5). Незачем создавать запросы в резалтсет через "+". Если юзер имеет доступ к вводу данных, то ждите SQL инджектов. Для этого у PreparedStatement есть, к примеру, setString()

6). Коннекты надо закрывать в блоке finally

7). Вам жалко пробелов между операторами? (i=0;i<valuesConsistingArrayList.size();i++) читать не очень удобно.
PM MAIL   Вверх
Dzo
Дата 9.7.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 22.4.2008

Репутация: 1
Всего: 1



Цитата(SoulKeeper @  9.7.2008,  17:31 Найти цитируемый пост)
1). зачем i отдельно?


Чтобы не печатать каждый раз int d каждом for loop'е?

Цитата(SoulKeeper @  9.7.2008,  17:31 Найти цитируемый пост)
2). for (int i = 0, n = valuesConsistingArrayList.size(); i < n; i++) { будет работать быстрее, т.к. метод size() вызовется 1 раз

3). Вы на каждый цикл открываете по коннекту и делаете по запросу в базу. Есть такие чудесные вещи как WHERE getByColumnName IN (1, 2, 3, ...). Выполнится в одном запросе

4). геттеры и сеттеры getSomething, setSomething - считаются хорошим стилем для названий методов для переменной something. В результате у вас по конвеншинах получится getGetByColumnName() и setGetByColumnName(). Переменные getSomething/setSomthing/isSomething называть не стоит.


Спасибо!

Цитата(SoulKeeper @  9.7.2008,  17:31 Найти цитируемый пост)
5). Незачем создавать запросы в резалтсет через "+". Если юзер имеет доступ к вводу данных, то ждите SQL инджектов. Для этого у PreparedStatement есть, к примеру, setString()


Кстати к вопросу об инджектах? Они тоже возможны, если сайт писан на джаве? Методы защиты стандартные (как на PHP например). 

Вопрос: если я хочу чтобы реализация не зависела от названий элементов (таблиц, столбцов) в базе, или по крайней мере их можно было изменять безболезненно для кода в ОДНОМ месте, что мне стоит попробовать?

PM MAIL   Вверх
SoulKeeper
Дата 9.7.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



JPA\Hibernate

Edit: а от инджектов защищатся не надо, надо грамотно с SQL работать ;)

Это сообщение отредактировал(а) SoulKeeper - 9.7.2008, 17:58
PM MAIL   Вверх
Dzo
Дата 9.7.2008, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 22.4.2008

Репутация: 1
Всего: 1



Цитата(SoulKeeper @  9.7.2008,  17:58 Найти цитируемый пост)
Edit: а от инджектов защищатся не надо, надо грамотно с SQL работать ;)


Подробнее? Статью?

А алгоритм сортировки блин не работает : (( Сейчас стал тестить на некоторых вариантаъ не работает : ( Сенодня уже нет сил, затвра добью.
PM MAIL   Вверх
SoulKeeper
Дата 9.7.2008, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



Для начала будет достаточно передавать все параметры через setXXX(). 

Ну а по поводу сортировки - используйте Collections.sort

Это сообщение отредактировал(а) SoulKeeper - 9.7.2008, 20:53
PM MAIL   Вверх
fixxer
Дата 9.7.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



А почему для сортировки не задействовать ORDER BY в запросе?


--------------------
user posted image
PM MAIL ICQ   Вверх
Shaggie
Дата 10.7.2008, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 4
Всего: 72



Цитата(SoulKeeper @  9.7.2008,  18:31 Найти цитируемый пост)
2). for (int i = 0, n = valuesConsistingArrayList.size(); i < n; i++) { будет работать быстрее, т.к. метод size() вызовется 1 раз

Разница незначительная, количество элементов в ArrayList хранится в самом объекте. То есть не происходит пересчёта списка каждый раз при вызове size() - это лишь возврат значения закрытой переменной. А чтение кода между тем приобретает дополнительную сложность.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Dzo
Дата 10.7.2008, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 22.4.2008

Репутация: 1
Всего: 1



Цитата(fixxer @  9.7.2008,  21:24 Найти цитируемый пост)
А почему для сортировки не задействовать ORDER BY в запросе? 


Гениалисимус : )
PM MAIL   Вверх
Kangaroo
Дата 11.7.2008, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(Dzo @  9.7.2008,  16:58 Найти цитируемый пост)
Database db = new Database();
                    dbConnection = db.dbConnect(Database.USER, Database.PWD);
                    connectionWasClosed = true;

Открывается соединение, а потому переменной connectionWasClosed(!!) присваивается тру. Такое название только запутывает.


--------------------
Lost....
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.