Я работаю над сетевым сервисом, который на основе команд, которые он получает по сети, заставляет работников выполнять различные задания.Я хочу иметь запись в журнале каждый раз, когда определенному работнику поручается выполнить какую-то работу.
У меня есть функция (скажем, function_caller
), которая, помимо прочего, вызывает другую функцию, на которую она получает указательв качестве аргумента.Я хотел бы, чтобы мой регистратор уведомлял, какую функцию function_caller
вызывает.
Первоначально я хотел, чтобы function_caller
получал некоторое перечисление вместо указателя функции, предоставляло перечисление регистратору, а затемиспользуйте вспомогательную функцию, которая возвращает подходящий указатель на основе перечисления.Тем не менее, function_caller
уже глубоко запутан в кодовой базе, над которой я работаю, и похоже, что было бы много работы по реорганизации всех функций, которые вызывают function_caller
, чтобы выбрать правильное перечисление и использовать новый аргумент.
Так что моей следующей идеей было иметь switch
, который для каждого указателя функции будет иметь некоторое строковое представление, но я никогда не сталкивался с чем-то подобным (и изо всех сил пытался найти кого-то, даже упоминавшего такую идею наGoogle), поэтому у меня есть ощущение, что я мог упустить некоторые серьезные недостатки этой опции.
Единственная существенная проблема, которую я вижу, заключается в том, что каждый разработчик, решивший передать указатель функции нового типа на function_caller
, будетнужно как-то знать, чтобы обновить switch
, иначе это не удастся.
Я что-то пропустил?Или, может быть, я должен рассмотреть другой подход?