我有一个遗留的C API,我需要添加功能。具体来说,我需要让这些API的一些调用是线程安全的,因为这样的调用:
A_DoFoo(HandleA a)
使用A类所有句柄共享的对象。
我的第一个想法是向API添加一个如下所示的函数:
A_DoFooEx(HandleA a, HandleB b)
这是正常的做法吗?
(由于多年接触Win32 SDK,我只使用了Ex后缀。为函数提供更具描述性的名称更有意义吗?)
答案 0 :(得分:1)
在新名称下添加另一个函数是直接C中处理此问题的标准(实际上是唯一的)方法(在C ++中,您可以添加新的重载并保留旧名称)。我不是Ex
后缀的忠实粉丝,因为它没有告诉你新旧API之间的区别是什么。另一方面,不要像A_DoFoo_ThreadSafe
那样长期和令人发指的事情让人感到悲伤,这会伤害你的可读性。
在这种情况下,我会尝试使用一个名称来表明HandleB
的要求是什么。如果你告诉我们这个API实际上做了什么,我们可以提出更具体的建议。
答案 1 :(得分:0)
我更喜欢为线程安全代码编写包装器。所以我可以嵌入任何线程安全代码并使其成为线程安全使用包装器。
您应始终使用正确的命名格式。 它将帮助您轻松维护代码并使其更具可读性。