Добавление функциональности в существующий C API - PullRequest
0 голосов
/ 14 марта 2011

У меня есть устаревший C API, к которому мне нужно добавить функциональность.В частности, мне нужно сделать некоторые вызовы этого API поточно-ориентированными, потому что такой вызов:

A_DoFoo(HandleA a)

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

A_DoFooEx(HandleA a, HandleB b)

Это нормальный подход?

(я использовал суффикс Ex только из-за многолетнего использования Win32 SDK.Имеет ли смысл давать более описательное имя функции?)

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Добавление другой функции под новым именем является стандартным (и фактически единственным) способом решения этой проблемы в прямом C (в C ++ вы можете добавить новую перегрузку и сохранить старое имя).Я не большой поклонник суффикса Ex, потому что он не говорит вам, в чем разница между старым и новым API.С другой стороны, не оседлайте людей чем-то длинным и отвратительным, как A_DoFoo_ThreadSafe, что ухудшает читабельность.

В этом случае я бы попытался придумать имя, которое указывает на требования HandleB есть.Если вы расскажете нам, что на самом деле делает этот API, мы, возможно, сделаем более конкретные предложения.

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

Я предпочитаю писать обертку для многопоточного кода.Таким образом, я могу встроить любой поток в небезопасный код и сделать его потокобезопасным с помощью оболочки.

Вы всегда должны использовать правильный формат именования.это поможет вам легко поддерживать ваш код и сделать его более читабельным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...