LINUX.ORG.RU

Как рефакторить такое? Это ведь синглтон называется, да?

 , ,


0

1

Есть унаследованный древний код, который надо переделать.

Код написан на C. Выглядит он сплошь и радом так:

#include "cool_header_with_lots_of_externs.h"
int g1, g2, g3, g4 ....;
float f1, f2;
some_cool_t d1, d2;
...

void Do_Something_Useful(void)
{

... тут мы пользуемся всяким этим глобальным хозяйством,
еще тащим external глобальное, выставляем, испольуем и тп.

}

у нас много таких файлов, в одном из них точка входа в API,
с параметрами.

И весь код построен по такому принципу. Из-за этого довольно сложно бывает понять откуда что берется. Задача - выделить код в библиотеку, так, чтобы можно было этим пользоваться с несколькими объектами. То есть чтобы можно было вызвать API и обработать данные несколько раз, вызвав функцию. Про реентерабельность я и не заикаюсь. Есть ли какой способ это быстро зарефакторить? Какая-нибудь стандартная методика или мож софт вспоможительный? Просто нужно работать с несколькими объектами, с чередованием вызовов API, то есть не завершая работу с первым при переходе ко второму.

★★★★★

Что за странный вопрос? Занеси нужные данные в структуру, и передавай ее куда надо.

tailgunner ★★★★★
()

ну только ручками.
А если нужно просто с минимум усилий несколько объектов, то наверное вместо глобального объекта сделать список объектов и функцию, которая получая устанавливает текущий объект или в каждой функции передавать айди или ссылку на объект как параметр.

Bad_ptr ★★★★★
()

Составить список функций и набор используемых в них глобальных переменных. После этого всю глбальщину разделить между несколькими структурами.

trex6 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.