лучший способ дизайна петли - PullRequest
0 голосов
/ 26 августа 2010

Мне интересно, есть ли лучший способ создания петель.Как вы видите, function1 и function2 имеют почти одинаковый код, ожидайте получения Hash Map.

** Текущий код 1 **

//Field
 ResultSet rs = null;
 HashMap<Object, Object> hashMap1;
 HashMap<Object, Object> hashMap2;



if(somecondition)
{
   function1()
}
else
{
   function2();
}

void function1()
{
    while(rs.next)
    {
       hashMap1 = someClass.getData1();
       hashMap2 = someClass.getData2();
       // compareHashMap
   }

}

void function2()
{
    while(rs.next)
    {
       hashMap1 = someClass.getModfiedData1();
       hashMap2 = someClass.getModfiedData2(); 
        // compareHashMap
    }
 }

Другой путь (короткий и сладкий) 2

while(rs.next)
{
     if(somecondition)
     {
         hashMap1 = someClass.getData1();
         hashMap2 = someClass.getData2();
     }
     else
     {
       hashMap1 = someClass.getModfiedData1();
       hashMap2 = someClass.getModfiedData2();  
     }
     // compareHashMap
 }

Вопросы:

Если в БД 10000 записей или более, лучше ли использовать 1?

Есть ли альтернативный дизайн, или я иду с № 2?

Спасибо

Ответы [ 2 ]

3 голосов
/ 26 августа 2010

Ну, в первом примере вы проверяете условие один раз, а затем перебираете N записей.В примере 2 вы выполняете итерацию по N записям, а также выполняете N проверок условий.Если это условие необходимо проанализировать для каждой отдельной записи, то используется второй цикл.В противном случае, если это условие необходимо проверить только один раз ... зачем добавлять ненужные накладные расходы на проверку условия N раз?

2 голосов
/ 26 августа 2010

Я думаю, что более простым способом было бы сделать "somecondition" свойством, которое вы устанавливаете в someClass, а затем иметь единственный метод, который вы вызываете для получения данных. Что-то вроде

someClass.someCondition = somecondition

while(rs.next)
{
    hashMap1 = someClass.getMyData1();
    hashMap2 = someClass.getMyData2();
}

или вы можете передать переменную в функцию

while(rs.next)
{
    hashMap1 = someClass.getMyData1(somecondition);
    hashMap2 = someClass.getMyData2(somecondition);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...