объединение 3 функций в одну - PullRequest
1 голос
/ 16 марта 2011

У меня есть 3 функции.Как мне объединить их в один?У меня есть список имен таблиц в функции 3. Функция 2 имеет имя узла, соответствующее этой таблице, а функция 1 имеет количество столбцов в каждой из таблиц.Я предпочитаю одну функцию со всеми 3 входными значениями, используя только те, которые требуются, в зависимости от подсказки, переданной входным значением функции.

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Используйте массивы для хранения имен и атрибутов вашей таблицы.Создайте четвертую функцию для чтения и сохранения имен этих таблиц и т. Д. В эти массивы.Затем другие три функции могут получить доступ к этим массивам.

read_tables ()
{
    counter=0
    while read -r tbl col_num tag
    do
        tables[counter]=$tbl
        col_nums[counter]=$col_num
        tags[counter]=$tag
        ((counter++))
    done << 'TABLES'
        test.authadv 45 AUTHADV
        test.fee     29 FEE
        test.finadv  54 FINADV
TABLES
}

create_tables ()
{
    for ((i=0; i<counter; i++))
    do
        mysql test -e"call mysql.createtable('${tables[i]}', ${col_nums[i]});"    
    done
}

# match tables names with the respective nodes

match_tags ()
{
    for ((i=0; i<counter; i++))
    do
        php -e xmlread_new.php "$filename" "${tables[i]}" "${tags[i]}"
    done
}


# export data to excel. Change the table names as required

export_excel ()
{
    for ((i=0; i<counter; i++))
    do
        mysql --table -e"select * from ${tables[i]}" > "$report_name.txt"
    done
}
0 голосов
/ 16 марта 2011

Я не могу понять, как функции зависят друг от друга.Тем не менее, это должен быть хороший стиль, чтобы лучше иметь больше и меньше функций вместо одной большой.

Ключевые слова: разделение задач, один инструмент для одной работы.

Если у вас есть функции меньшего размера, их легче рассуждать.Проще их проверить.Проще найти место для повторного использования одного из них.

...