LINUX.ORG.RU

История изменений

Исправление Xintrea, (текущая версия) :

Вопрос в том — зачем ты этого хочешь?

Чтобы вместо этого уродства:

void EditorConfig::update_version_process(void)
{
int fromVersion=get_config_version();
// Последняя версия на данный момент - 11
if(fromVersion<=1)
update_version(1, 2, get_parameter_table_1(), get_parameter_table_2());
if(fromVersion<=2)
update_version(2, 3, get_parameter_table_2(), get_parameter_table_3());
if(fromVersion<=3)
update_version(3, 4, get_parameter_table_3(), get_parameter_table_4());
if(fromVersion<=4)
update_version(4, 5, get_parameter_table_4(), get_parameter_table_5());
if(fromVersion<=5)
update_version(5, 6, get_parameter_table_5(), get_parameter_table_6());
if(fromVersion<=6)
update_version(6, 7, get_parameter_table_6(), get_parameter_table_7());
if(fromVersion<=7)
update_version(7, 8, get_parameter_table_7(), get_parameter_table_8());
if(fromVersion<=8)
update_version(8, 9, get_parameter_table_8(), get_parameter_table_9());
if(fromVersion<=9)
update_version(9, 10, get_parameter_table_9(), get_parameter_table_10());
if(fromVersion<=10)
update_version(10, 11, get_parameter_table_10(), get_parameter_table_11());
}


Можно было написать так:

void EditorConfig::update_version_process(void)
{
 int fromVersion=get_config_version();

 QList<QStringList (*)()> parameterFunctions;

 parameterFunctions << NULL; // Исторически счет версий идет с 1, NULL чтоб не путаться
 parameterFunctions << get_parameter_table_1;
 parameterFunctions << get_parameter_table_2;
 parameterFunctions << get_parameter_table_3;
 parameterFunctions << get_parameter_table_4;
 parameterFunctions << get_parameter_table_5;
 parameterFunctions << get_parameter_table_6;
 parameterFunctions << get_parameter_table_7;
 parameterFunctions << get_parameter_table_8;
 parameterFunctions << get_parameter_table_9;
 parameterFunctions << get_parameter_table_10;
 parameterFunctions << get_parameter_table_11;

 for(int i=1; i<parameterFunctions.count()-1; ++i)
   if(fromVersion<=i)
     update_version(i, i+1, (parameterFunctions.at(i))(), (parameterFunctions.at(i+1))() );
}


Приходится чтобы методы get_parameter_table_X были статическими, но это не всегда возможно.

Исправление Xintrea, :

Вопрос в том — зачем ты этого хочешь?

Чтобы вместо этого уродства:

void EditorConfig::update_version_process(void)
{
int fromVersion=get_config_version();
// Последняя версия на данный момент - 11
if(fromVersion<=1)
update_version(1, 2, get_parameter_table_1(), get_parameter_table_2());
if(fromVersion<=2)
update_version(2, 3, get_parameter_table_2(), get_parameter_table_3());
if(fromVersion<=3)
update_version(3, 4, get_parameter_table_3(), get_parameter_table_4());
if(fromVersion<=4)
update_version(4, 5, get_parameter_table_4(), get_parameter_table_5());
if(fromVersion<=5)
update_version(5, 6, get_parameter_table_5(), get_parameter_table_6());
if(fromVersion<=6)
update_version(6, 7, get_parameter_table_6(), get_parameter_table_7());
if(fromVersion<=7)
update_version(7, 8, get_parameter_table_7(), get_parameter_table_8());
if(fromVersion<=8)
update_version(8, 9, get_parameter_table_8(), get_parameter_table_9());
if(fromVersion<=9)
update_version(9, 10, get_parameter_table_9(), get_parameter_table_10());
if(fromVersion<=10)
update_version(10, 11, get_parameter_table_10(), get_parameter_table_11());
}


Можно было написать так:

void EditorConfig::update_version_process(void)
{
 int fromVersion=get_config_version();

 QList<QStringList (*)(bool)> parameterFunctions;

 parameterFunctions << NULL; // Исторически счет версий идет с 1, NULL чтоб не путаться
 parameterFunctions << get_parameter_table_1;
 parameterFunctions << get_parameter_table_2;
 parameterFunctions << get_parameter_table_3;
 parameterFunctions << get_parameter_table_4;
 parameterFunctions << get_parameter_table_5;
 parameterFunctions << get_parameter_table_6;
 parameterFunctions << get_parameter_table_7;
 parameterFunctions << get_parameter_table_8;
 parameterFunctions << get_parameter_table_9;
 parameterFunctions << get_parameter_table_10;
 parameterFunctions << get_parameter_table_11;

 for(int i=1; i<parameterFunctions.count()-1; ++i)
   if(fromVersion<=i)
     update_version(i, i+1, (parameterFunctions.at(i))(), (parameterFunctions.at(i+1))() );
}


Приходится чтобы методы get_parameter_table_X были статическими, но это не всегда возможно.

Исходная версия Xintrea, :

Вопрос в том — зачем ты этого хочешь?

Чтобы вместо этого уродства:

void EditorConfig::update_version_process(void)
{
int fromVersion=get_config_version();
// Последняя версия на данный момент - 10
if(fromVersion<=1)
update_version(1, 2, get_parameter_table_1(), get_parameter_table_2());
if(fromVersion<=2)
update_version(2, 3, get_parameter_table_2(), get_parameter_table_3());
if(fromVersion<=3)
update_version(3, 4, get_parameter_table_3(), get_parameter_table_4());
if(fromVersion<=4)
update_version(4, 5, get_parameter_table_4(), get_parameter_table_5());
if(fromVersion<=5)
update_version(5, 6, get_parameter_table_5(), get_parameter_table_6());
if(fromVersion<=6)
update_version(6, 7, get_parameter_table_6(), get_parameter_table_7());
if(fromVersion<=7)
update_version(7, 8, get_parameter_table_7(), get_parameter_table_8());
if(fromVersion<=8)
update_version(8, 9, get_parameter_table_8(), get_parameter_table_9());
if(fromVersion<=9)
update_version(9, 10, get_parameter_table_9(), get_parameter_table_10());
if(fromVersion<=10)
update_version(10, 11, get_parameter_table_10(), get_parameter_table_11());
}


Можно было написать так:

void EditorConfig::update_version_process(void)
{
 int fromVersion=get_config_version();

 QList<QStringList (*)(bool)> parameterFunctions;

 parameterFunctions << NULL; // Исторически счет версий идет с 1, NULL чтоб не путаться
 parameterFunctions << get_parameter_table_1;
 parameterFunctions << get_parameter_table_2;
 parameterFunctions << get_parameter_table_3;
 parameterFunctions << get_parameter_table_4;
 parameterFunctions << get_parameter_table_5;
 parameterFunctions << get_parameter_table_6;
 parameterFunctions << get_parameter_table_7;
 parameterFunctions << get_parameter_table_8;
 parameterFunctions << get_parameter_table_9;
 parameterFunctions << get_parameter_table_10;
 parameterFunctions << get_parameter_table_11;

 for(int i=1; i<parameterFunctions.count()-1; ++i)
   if(fromVersion<=i)
     update_version(i, i+1, (parameterFunctions.at(i))(), (parameterFunctions.at(i+1))() );
}


Приходится чтобы методы get_parameter_table_X были статическими, но это не всегда возможно.